Posted by haifeng on 2020-05-29 08:43:56 last update 2020-05-29 08:43:56 | Answers (0) | 收藏
许多库中的随机数生成器基于函数
xi+1≡(Axi+C)mod(2B−1)
如果令 A=48271, C=1, B=31, 则有
(48271×179424105+1)mod(231−1)=179424105
可以是用 Calculator 验证:
>> (48271*179424105+1)mod(2^31-1) in> (48271*179424105+1)@(2^31-1)
out> 179424105
这说明, 如果种子(即初值) x0=179424105, 则生成器将陷入周期为 1 的循环.
References:
Mark Allen Weiss 著, 张怀勇 等译《数据结构与算法分析C++描述》(第3版). P.333