当前位置: 首页 > 编程语言 > C#

快速随机生成器分享

时间:2023-04-10 15:45:56 C#

FastRandomGenerator如何在C#中创建一个支持用maxValue(和/或minValue)填充字节数组的快速RNG(随机数生成器)?我发现这个http://www.codeproject.com/KB/cs/fastrandom.aspx但没有这些功能。用整数填充字节这一事实与System.Random的典型用例不同,如果确实需要,可以严重破坏它。System.Random是为一般用途而设计的。(事实上??,当我测试它们的速度和分布时,我通常会发现系统随机例程毫无用处。)有些情况下您需要其他东西。但是你必须非常清楚你的需求。多快?你愿意放弃什么?如果您真的需要“快”,Marsaglia已经生产了许多非常快的随机数生成器,可以根据您的需要进行调整。这里有一些关于其中之一的链接,Xorshift:最后一个解决了您正在定位字节的事实。我只需要几个超快的随机数。在处理器速度较慢的主机游戏中,随机化可以在达到帧率目标和不达到帧率目标之间产生差异。你的用例是什么?无论如何,如果可以的话,请使用System.Random。或者,调整您在问题中链接的例程(作者声称它比System.Random快8倍。)System.Random的速度足以满足几乎所有典型用途。如果您在使用包含对System.Random的调用的代码时遇到性能问题,请务必在尝试构建新的Random之前分析您的代码。您的性能问题很可能不在框架中,而在您自己的代码中。如果您在循环中调用Random,请确保您不会在每次迭代中创建一个新的Random实例,而是重复使用一个公共的Random实例。这样做可以提高性能,因为您不会为GC清理创建新对象,并且还可以提高生成的随机数的质量。如果你有一个从单位间隔返回数字的随机数生成器,就像你提到的代码项目文章中那样,那么你可以使用该生成器首先生成一个值u然后返回a+(ba)*u以获得a之间的值和b。使用加密服务....RNGCryptoServiceProvidercrypto=newRNGCryptoServiceProvider();字节[]字节=新字节[5];crypto.GetBytes(字节);当然,这只是满足字节区的要求。。。可以使用Reflector将System.Random反编译成C#。这将为您提供满足您要求的快速随机数生成器的C#代码。以上就是C#学习教程:快速随机生成器分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: