技术成就梦想

知道用户需求,做到专注!c#,donet,Frameworks,UML,面向对象,设计模式!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随机数产生方法有很多, 如列表法,平方取中法,线性同余法,加法同余法,乘法同余法,混合同余法。这里采用产生随机数最快,统计效果最好的乘法同余法,公式:

Rn+1 = C*Rn(mod M)

n=1,2,3,4,5...

C为常数,Rn为第n个随机数,Rn+1为第n+1个随机数,M为摸,MOD表示做除法只取余数。个参数取值不是随意的,有抽象代数和数论中的模数计算为理论基础。

R0相对于M是素数、C是M的原始方根时,生成的随机数恰恰是一个周期。

一组推荐的采用值:

C=2^18 + 3 = 262147 (262147是素数)