如何在C#中制作快速的RNG(随机数生成器),以支持用maxValue(和/或minValue)填充字节数组?
我已经找到了这个http://www.codeproject.com/KB/cs/fastrandom.aspx,但是没有这些功能。

最佳答案

用整数填充字节的事实与System.Random的典型用法情况有很大不同,如果确实需要,您可能会打败它。

System.Random供一般使用。 (实际上,当我对它们进行速度和分布测试时,通常会发现它们对系统随机例程没有启发。)在某些情况下,您还需要其他东西。但是您必须非常明确自己的需求。多快?您愿意放弃什么?

如果您确实需要“快速”,Marsaglia已经产生了许多非常快速的随机数生成器,它们可以适应您的需求。以下是其中一个Xorshift的一些链接:

  • Xorshift (Wikipedia)
  • Fastest implementation of Xorshift in C#, and measurements comparing it to System.Random
  • Diehard tests很有趣。
  • Agner has C++ code用于许多快速随机。
  • 使用SIMD指令的
  • Here's a fast twister

  • 最后一个解决了您针对字节的事实。

    我只需要几次 super 快速随机。在处理器速度较慢的主机游戏中,随机可能会导致达到帧速率目标与不达到帧速率目标之间的差异。您的用例是什么?如果可以,请务必使用System.Random。

    或者,调整您在问题中链接的例程(作者声称这是System.Random速度的8倍。)

    关于c# - 快速随机发生器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1790776/

    10-12 12:44
    查看更多