计算机本身是无法产生真正的随机数的,但是可以根据一定的算法产生伪随机数(pseudo-random numbers)。最古老最简单的莫过于 Linear congruential generator:

xn+1=(axn+c)modm

  • 式中的 ac 都是根据数学知识推导出的一些适合的常数,
  • nn+1,无疑是一种迭代式的推导情形,但同时算法产生的下一个随机数 xn+1 完全取决于当前随机数 xn 的值,
  • 当随机数序列足够大的时候,随机数将生成重复子序列的情况,
  • 理论发展到今天,有很多更加先进的随机数产生算法出现,比如 python 数值运算库 numpy(np.random.RandState) 用的是 Mersenne Twister 等。但是不管算法如何发展,这些都不是本质上的随机数,用冯诺依曼的一句话说就是:
posted on 2016-11-21 12:04  未雨愁眸  阅读(299)  评论(0编辑  收藏  举报