生成随机数的算法?不要使用System.Random

时间:2010-08-27 06:58:07

标签: c# java .net random

如果没有System.Random类,你怎么会生成一个随机数?

是否有任何已知的算法,或者你曾经设计过哪种算法?

4 个答案:

答案 0 :(得分:7)

真正的随机数只能在计算机“外部”生成,使用放射性计数等。一些威盛处理器有硬件可以这样做。

Don Knuth的“计算机编程艺术”第二卷花了很多时间从数学背景中详尽地讨论各种伪随机数实现。推荐阅读。

答案 1 :(得分:1)

您无法使用我们当前的确定性计算机生成真正随机的数字。然而,有许多不同的方法来生成伪随机数。有关算法的一些信息,请参阅维基百科上的pseudorandom number generator

答案 2 :(得分:1)

看看Mersenne Twister。我相信这是System.Random实现的相同算法,非常常见的非加密安全PRNG具有良好的随机分布。

答案 3 :(得分:1)

像其他答案一样,它不可能用计算机生成真正的随机数,但是对于伪随机数,我之前使用的一种算法是Linear Congruential Generator,它简单快速,但是我相信还有更好的选择。

编辑:语法