计算机本身是无法产生真正的随机数的,但是可以根据一定的算法产生伪随机数(pseudo-random numbers)。最古老最简单的莫过于 Linear congruential generator:
xn+1=(axn+c)modm
- 式中的 a 和 c 都是根据数学知识推导出的一些适合的常数,
- 从 n 向 n+1,无疑是一种迭代式的推导情形,但同时算法产生的下一个随机数 xn+1 完全取决于当前随机数 xn 的值,
- 当随机数序列足够大的时候,随机数将生成重复子序列的情况,
- 理论发展到今天,有很多更加先进的随机数产生算法出现,比如 python 数值运算库 numpy(np.random.RandState) 用的是 Mersenne Twister 等。但是不管算法如何发展,这些都不是本质上的随机数,用冯诺依曼的一句话说就是: