一个很好的C随机数生成器

Voi*_*tar 9 c random

我需要一个好的随机数生成器,用于我用C编写的程序.如果你感兴趣的话,它是一个分形火焰发生器.尽管我过去使用相同的算法取得了成功,但我的图像非常粗糙.我终于意识到,差异是我使用的随机数发生器.令人难以置信的是,它产生了巨大的差异.我希望更好的随机数发生器可能会产生更好的结果.答案可以是代码示例的形式,也可以是预先存在的随机数库的链接.最重要的要求:

  • 它应该产生相对高质量的随机数流
  • 它的期限必须超过一百亿
  • 它应该足够快并提供良好的性能权衡.

Phi*_*ipp 12

对于Mersenne Twister来说,这似乎是一个很好的用例

  • 它比rand()的大多数标准实现更快
  • 它有一个很长的(2 ^ 19937 - 1)时期
  • 它具有相当高的质量 - 它通过了大多数标准化的随机性测试
  • 这是公共领域


Pio*_*icz 8

如果你正在寻找一个非常快速,体面的质量算法,你应该考虑xorshift128+xorshift1024*.它们几乎与LCG一样快(根据我的比较,它们比简单的在线LCG慢30%),同时具有比LCG更好的质量.

你可以在这里找到他们的代码和比较:http://xorshift.di.unimi.it/