Java.Random环绕

时间:2013-08-06 18:04:53

标签: java

我发现多个引用说Java.Random PRNG将在2 ^ 48个数字出现问题之后回滚。有没有人用代码对它进行了实际测试并确定它何时结束?

由于

1 个答案:

答案 0 :(得分:8)

嗯,Java RandomLCG,有48位种子。这在documentation

中列出
  

该类使用48位种子,使用线性同余公式进行修改。 (参见Donald Knuth,“计算机程序设计的艺术”,第2卷,第3.2.1节。)

无需测试。 LCG的非常很好理解。 Knuth实际上在TAOCP第2卷中做得非常好(这是他所有书中最可读的材料)。

已知Java中LCG的乘数为25214903917,我们非常了解 生成器。 Java所做的是将LCG的输出的第16位到第47位产生32位输出。这样做是因为已知低阶位的周期比高阶位短。