您的伪随机数生成器(PRNG)是否曾经不够随机?

时间:2011-02-23 01:23:51

标签: math random simulation montecarlo prng

您是否编写过模拟或随机算法,因为您使用的(伪)随机数的质量而遇到麻烦?

发生了什么事?

你是如何发现/意识到你的prng是问题?

切换PRNG足以解决问题,还是必须切换到真正的随机源?

我正在试图找出哪些类型的应用程序需要担心其随机性的质量以及当这成为问题时如何实现。

2 个答案:

答案 0 :(得分:3)

  1. 过时的随机数生成器RANDU在七十年代因为产生“坏”随机数而臭名昭着。我的博士生导师提到它影响了他的博士学位,他不得不重新运行模拟。在Google上搜索RANDU linear congrunetial generator会显示其他示例。
  2. 当我在多台机器上运行模拟时,我有时会想要生成“随机种子”,而不是仅使用适当的并行随机数生成器。例如,使用当前时间(以秒为单位)生成种子。这给我带来了足够的问题,我不惜一切代价避免这种情况。

  3. 这主要是由于我的特殊兴趣,但除了并行计算之外,创建我自己的随机数生成器的想法永远不会超出我的想法。在大多数语言中,调用经过良好测试的随机数函数是微不足道的。

答案 1 :(得分:1)

DieHard执行prng是一个好习惯。现在存在非常好的和快速的PRNG(参见Marsaglia的工作),请参阅Numerical Recipes 第3版以获得良好的介绍。