2012-07-15 62 views
2

有人可以解释种子在模块随机模块中做什么的方法吗?提前致谢。python随机模块种子方法

random.seed(42) #same connections each time for easier debugging 
+2

下面是关于你正在询问的函数的python文档的链接:[link](http://docs.python.org/library/random.html?highlight=random.seed#random.seed)。如果我想知道关于python的东西,我总是会去看文档,这非常有用。 – thedoctar 2012-07-15 05:26:10

+0

您也可以查看[随机模块的Python源代码](http://hg.python.org/cpython/file/c6880edaf6f3/Lib/random.py)。 – Chris 2012-07-15 15:47:52

回答

4

随机函数是伪随机的,不是真正的随机函数。它会从种子值中产生看似随机的值,通常由种子值通过系统时钟或其他更有意义的值来设置,但如果随机函数采用相同的静态值(本例中为42),则随机函数的输出在每个程序执行时都是完全相同的,因此可以预测,这对调试代码很有用。

4

任何基于软件的随机数生成器都不是真正的随机数生成器,除非它从硬件来源提取随机数据。

播种随机数发生器(RNG)为它提供初始值。 RNG对这个值做了一些魔术,并产生一个新的值,再次将其输入(通常),然后产生另一个值。这一直持续发生,以创造一大堆非常随意的数字。真正的RNG并不那么简单,但你明白了。由于RNG实际上并不是随机的(它实际上是一个PRNG,其中P代表伪),因此每次给它两次相同的种子值会给你相同的随机数字流。这只对调试很有用,因为您知道“随机”数字是什么。