可能重复:
Understanding “randomness”
Fastest implementation of a true random number generator in C#
您好。 功能:
Random rand = new Random();
rand.Next()
它以秒为单位给出基于时间的伪随机数。 如何获得真正随机的数字? 我的意思是完全随机,不是基于系统时间和一些算法。 就像,当你丢弃一个立方体时,你得到了真正的随机数,而不是基于时间和任何算法。
您如何看待使用麦克风短片或鼠标位置变化之间的时间?
答案 0 :(得分:25)
将一只猫放入装有一瓶毒药的盒子里,当放射性物质的单个原子衰变时,它会释放出来。一小时后回来打开包装盒。如果猫死了,请在程序中使用0
作为随机位。如果它还活着,请使用1
。
根据需要重复使用尽可能多的猫和盒子。
答案 1 :(得分:7)
您可以使用random.org
等服务答案 2 :(得分:5)
要求用户按空格键几次。使用击键之间的微秒时间为随机数生成器播种。
(或者更好的是,使用剩余的时间,以微秒为单位,模拟256微秒,以消除任何人的周期性。因此,每个按键为您提供1个随机字节,使用适当数量的笔划为您的生成器播种)
答案 3 :(得分:5)
大多数编程随机函数都基于数学算法。有随机数发生器,在空气中使用波浪噪声(来自太空辐射),但它们是基于硬件的。
答案 4 :(得分:5)
为此,您需要hardware random number generater。
对于大多数案例来说,替代这种情况的好处是测量“硬件事件”的时间,例如用户输入或网络活动。
在Linux上,/dev/random
设备根据此方法生成字节。
答案 5 :(得分:4)
答案 6 :(得分:4)
获取真正的随机数非常困难。毕竟,PRNG在某种意义上是可预测的。但是基于物理源正确构建随机数生成器要困难得多;大多数随机来源都不能快速产生真正的随机位,并且很难判断你是否犯了一个错误的错误。几乎所有意图和目的都是一个好的PRNG。
(如果你需要的话,只使用高质量的PRNG,因为它们要慢很多,如果你这样做,请确保使用正确的PRNG:专为加密设计的PRNG与为蒙特卡罗设计的PRNG不同模拟 - 加密PRNG确保每一点都难以猜测,而MCSim PRNG确保光谱特性良好 - 而PRNG的大多数其他用途只是希望它们不邋and而且速度快;标准库通常足够好那里。)
答案 7 :(得分:3)
答案 8 :(得分:2)