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