qjy617891942的博客

记录学到的东西

线性同余生成器产生随机序列

产生比M小的随机序列的线性同余生成器公式为:x[i+1]=A*x[i]%M

如果M是素数,A的若干选择可以得到周期为M-1的随机序列,可以选择M=2^31-1=2 147 483 647,A=48 271。

为了避免溢出,可以使用以下公式:x[i+1]=A*(x[i]%Q)-R*[X[i]/Q]+Mδ(X[i])

其中Q和R分别是M/A的商和余数,如果前两项相减结果是正的,δ(X[i])为0;如果结果是负的则δ(X[i])为1。


阅读更多
个人分类: C/C++
上一篇const指针
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭