我需要一个好的随机数生成器用于我用 C 编写的程序。如果你有兴趣,它是一个分形火焰生成器。尽管我过去使用相同的算法取得了成功,但我的图像非常粗糙。我终于意识到,不同之处在于我使用的随机数生成器。令人难以置信的是,它产生了巨大的差异。我希望更好的随机数生成器可能会产生更好的结果。答案可能以代码示例或指向预先存在的随机数库的链接的形式出现。最重要的要求:
- 它应该产生相对高质量的随机数流
- 它的周期必须超过百亿
- 它应该足够快并提供良好的性能权衡。
如果您正在寻找一个非常快速、质量不错的算法,您应该考虑xorshift128+
or xorshift1024*
。它们几乎和 LCG 一样快(根据我的比较,它们只比简单的内联 LCG 慢 30%),同时具有比 LCG 更好的质量。
你可以在这里找到他们的代码和比较:http: //xorshift.di.unimi.it/