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