如果没有System.Random类,你怎么会生成一个随机数?
是否有任何已知的算法,或者你曾经设计过哪种算法?
答案 0 :(得分:7)
真正的随机数只能在计算机“外部”生成,使用放射性计数等。一些威盛处理器有硬件可以这样做。
Don Knuth的“计算机编程艺术”第二卷花了很多时间从数学背景中详尽地讨论各种伪随机数实现。推荐阅读。
答案 1 :(得分:1)
您无法使用我们当前的确定性计算机生成真正随机的数字。然而,有许多不同的方法来生成伪随机数。有关算法的一些信息,请参阅维基百科上的pseudorandom number generator。
答案 2 :(得分:1)
看看Mersenne Twister。我相信这是System.Random实现的相同算法,非常常见的非加密安全PRNG具有良好的随机分布。
答案 3 :(得分:1)
像其他答案一样,它不可能用计算机生成真正的随机数,但是对于伪随机数,我之前使用的一种算法是Linear Congruential Generator,它简单快速,但是我相信还有更好的选择。
编辑:语法