各种伪随机数发生器的质量测量

计算科学 参考请求 随机数生成
2021-12-12 11:37:12

根据这篇论文

理想情况下,伪随机数生成器会产生以下数字流:

  1. 是均匀分布的,
  2. 不相关,
  3. 从不重蹈覆辙,
  4. 满足任何随机性统计检验,
  5. 可重现(用于调试目的),
  6. 便携(在任何计算机上都一样),
  7. 可以通过调整初始“种子”值来改变,
  8. 可以很容易地分成许多独立的子序列
  9. 可以使用有限的计算机内存快速生成

但是,正如论文所暗示的,不可能同时满足所有标准。我很想知道不同的 PRNG 如何满足每个标准。我真的很想找到对每个 PRNG 的优缺点进行彻底讨论的参考,但我也愿意接受任何启发式方法:)

3个回答

我认为这本书Numerical Recipes--The Art of Scientific Computing,William H 等人在第 7 章中讨论了每个 PRNG 的优缺点。如果你想自己测试不同的 PRNG,你可以试试TestU01套件,该套件由L'Ecuyer 和 Richard Simard,该套件包含 3 个预定义的电池(SmallCrush、Crush 和 BigCrush),为测试提供不同级别的彻底性。大多数PRNG甚至像LCG一样可以通过SmallCrush,这大致相当于Diehard Battery,有些可能会通过Crush,但很少有人会通过BigCrush。它还在表格中总结了不同流行 PRNG 的测试结果。

我相信 Knuth 的《计算机编程艺术》一书专门针对随机数。它可能不是最新的,但它将是我开始阅读的地方。

这个包我很幸运: http ://www.phy.duke.edu/~rgb/General/dieharder.php

这是顽固的测试 + 一大套其他测试都上升到偏执水平,它输出实际指标!正如问题所建议的那样。

在我的硕士论文中,我在这个兔子洞里跑了一段路,该论文讨论了粘性流动是如何受到大量随机障碍物的影响的。在我的调查中,我发现随机球包装实际上是顽固测试套件的一部分,获得好的随机数很难。. . 在相关说明中,我还建议阅读此书以及相关的巨魔亚马逊评论: http ://www.amazon.com/Million-Random-Digits-Normal-Deviates/dp/0833030477