分类: C/C++
2012-12-09 23:26:02
随机算法在计算机中还是由一个公式来进行计算的,不过尽量让随机周期变得长一些,这个过程也称为伪随机.TAOCP第2卷记录的大致算法如下:
冯诺依曼最初提出一个算法公式计算:Xn+1 = mid(Xn2):Xn2的中间位数(与X,,n,,位数保持一致),如 Xn = 5772156649, Xn2 = 33317792380594909201,Xn+1 = mid(Xn2) = 7923805949. 缺点:
Algorithm K("Super-random" number generator),非常复杂,大致思想是通过Xn的某一位来决定下一步具体的执行操作(如Xn通过如何转换到Xn+1) 缺点:非常复杂,不利于计算机快速计算
现在最常用的随机算法,Xn+1 = (aXn + c) mod m,其中 n >= 0, 0<= a
当c=0时,满足:
当c!=0时,b = a-1,满足: