GNU C库中PRNG的周期是什么

What is the periodicity of the PRNG in GNU C Library?

本文关键字:周期 是什么 PRNG 库中 GNU      更新时间:2023-10-16

有关于gcc的g++中随机数生成器的周期性的文献吗(如果我们不重新播种函数)?我想我可以自己进行测试,但最好能获得经过充分验证的研究。

提前感谢您的帮助。

//编辑

我只是想补充一点,我已经搜索了很多,有多个引擎,但我没有找到任何具体的东西。我只阅读了关于周期性受到表示种子所需比特数限制的一般评论。(所以我想,考虑到srand通常是随时间调用的,周期性可能不超过10^12左右。但在我开始实现我的算法之前,更明确的东西会非常有帮助。)

在rand(3)手册页中搜索时,我发现了以下内容:

中rand()和srand()的版本Linux C库使用相同的随机数生成器为random()和srandom()

所以我看了一下随机的手册页,下面是你的答案:

这个随机数的周期发电机非常大,大约16*((2**31)-1)

这对于教学来说是非常有用的,因为你想发展自己的PRNG。但是,我不建议您在开发应用程序时使用此PRNG。你应该更喜欢Neil Butterworth建议的BoostRandom的实现(MT19937是一个很好的默认PRNG,对于大多数应用程序来说已经足够了)。

最后,如果你想了解更多关于PRNG的信息,我建议你阅读这两篇科学文章,很好地调查PRNG。

用于随机高性能计算的随机流的实际分布 ,David RC Hill,在国际高性能计算与仿真会议(HPCS)上,2010

伪随机数生成器 ,Pierre L'Ecuyer,在量化金融百科全书中量化金融百科全书,2008

srand/rand函数有点坏。由于您正在使用C++,我强烈建议您使用boost随机数库。它是一个只有头的库,所以您不需要构建任何东西。这里有一个如何使用它的例子。