excel生成的随机数可以检测出来吗

其实不光在Excel中,很多其他的程序语言都会提供随机数生成器 , 所以本文不会局限在Excel中,而是从算法的角度去谈随机数生成器的问题 。
首先,什么是随机数呢?一个不太严格的说法,就是:后面的数,与全面的数没有什么关联 。这也就引出了一个判断数列随机性的一个方法——计算线性相关性 。这里不具体讨论线性相关性到底怎么计算,大体来说 , 就是假设在一个数列中,后面的数与前面的数有线性的函数关系,进而 , 可以计算这个函数的一些系数,作为相关系数 。
在很多算法中,会使用「线性同余法」生成「伪随机数」 。线性同余法的基本方法如下:
x’ = (a x + b) (mod N)
在这个算法中,先对初始值x进行线性变换 , 即a x + b 。然后,对它取模,即后面的mod N 。在这个算法中,a、b、N的值尤为重要 。一个著名的随机数生成器16807生成器,其名称中的16807 , 对应的就是a=16807,N=2147483647 。可以产生随机性还不错的生成器 。
随机数生成器还有很多其他的方法,例如使用30号基础元胞自动机(ECA Rule 30)进行随机数生成的 。它从一串初始序列开始,使用30号元胞自动机规则进行演化,将得到的序列再转化为数值,也可以得到非常好的随机性 。这个算法被用在Mathematica的随机数生成器之中 。
【excel生成的随机数可以检测出来吗】
可以看到,这两个算法虽然不同,但都有一个「初始值」、「初始序列」 。这就是所谓的「随机数种子」,是伪随机算法初始的参数,通常需要外界提供 。

经验总结扩展阅读