有人可以在下面的示例中解释种子方法对随机模块的影响吗?提前谢谢。
random.seed(42) #same connections each time for easier debugging
答案 0 :(得分:4)
随机函数是伪随机的,而不是真正的随机函数。它从种子值产生看似随机的值,通常种子值由系统时钟或其他一些更有意义的变化值设置,但如果随机函数由相同的静态值(在这种情况下为42)播种,随机函数的输出在每个程序执行时都是完全相同的,因此是可预测的,这对调试代码很有用。
答案 1 :(得分:4)
任何基于软件的随机数生成器都不是真正随机的,除非它从硬件源中提取随机数据。
播种随机数生成器(RNG)为其提供初始值。 RNG对这个值做了一些魔术并产生了一个新值,它再次(通常)输入它,然后产生另一个值。这种情况一再发生,创造了大量非常随机的数字。真正的RNG并不那么简单,但你明白了。
由于RNG实际上并不是随机的(它实际上是PRNG,其中P代表伪),因此每次向它提供相同的种子值将为您提供相同的随机数流。这只对调试有用,因为您知道“随机”数字是什么。