如何使用C#生成真正的(非伪)随机数?

如何使用C#生成真正的(非伪)随机数?,第1张

如何使用C#生成真正的(非伪)随机数

这里的答案有两个主要方面。您应该适当注意一些非常重要的细节。

简易方法(出于简单性和实用性)

RNGCryptoServiceProvider
,这是在BCL的加密API的一部分,应该为你做的工作。从技术上讲,它仍然是一个伪随机数,但是“随机性”的质量要高得多-
顾名思义,它适用于加密目的。

还有其他具有高质量伪随机生成器的低温API。诸如Mersenne扭曲器之类的算法非常流行。

Random
BCL中的类相比,它要好得多。
Random
例如,如果在图表上绘制由生成的数字,则您应该能够识别模式,这是弱点的有力标志。这主要是由于该算法仅使用固定大小的种子查找表。

艰难的道路(用于高质量的理论随机性)

要生成 真正的
随机数,您需要利用一些自然现象,例如核衰变,微观温度波动(CPU温度是一个相对方便的来源),仅举几例。但是,这要困难得多,并且当然需要附加的硬件。我怀疑实际的解决方案(

RNGCryptoServiceProvider
或类似的解决方案)应该为您做得很好。

现在,请注意,如果 确实需要真正的随机数 ,则可以使用 Random.org之类
的服务,该服务会生成具有非常高的随机性/熵(基于 大气噪声
)的数字。数据可免费下载。尽管这确实为您提供了适合科学研究的数据,但对于您的情况,这可能不必要地变得复杂。

最终由您选择,但至少现在您应该能够了解RNG的各种类型和级别,从而做出有意义的决定。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存