random.seed():它做什么?
我对Python中的random.seed()
有些困惑。 例如,为什么下面的testing做他们做(一贯)?
>>> import random >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.randint(1, 10) 3 >>> random.randint(1, 10) 6 >>> random.randint(1, 10) 6 >>> random.randint(1, 10) 7
我找不到这方面的好文档。 提前致谢!
伪随机数发生器通过对一个值执行一些操作来工作。 通常这个值是由发生器产生的以前的数字。 但是,第一次使用发生器时,没有以前的值。
播种一个伪随机数发生器给它它的第一个“先前”值。 每个种子值将对应于给定随机数发生器的一系列生成值。 也就是说,如果你提供两次相同的种子,你会得到相同的数字序列两次。
一般来说,你想给你的随机数发生器播种一些值,这会改变程序的每一次执行。 例如,当前时间是一个常用的种子。 这种情况不会自动发生的原因是,如果你愿意,你可以提供一个特定的种子来获得一个已知的数字序列。
所有其他的答案似乎没有解释使用random.seed()。 这是一个简单的例子( 来源 ):
import random random.seed( 3 ) print "Random number with seed 3 : ", random.random() #will generate a random number #if you want to use the same random number once again in your program random.seed( 3 ) random.random() # same random number as before
>>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.seed(9002) >>> random.randint(1, 10) 3
你试试这个。 假设'random.seed'给随机值生成器('random.randint()')一个值,它根据这个种子生成这些值。 随机数的一个必须属性是它们应该是可重复的。 一旦你把相同的种子你得到相同的随机数字模式。 所以你从头开始重新生成它们。 你给了一个不同的种子,它开始于不同的初始(大于3)。
你已经给了一颗种子,现在它会产生一个接一个的随机数字。 所以你可以假设一个数字为一个种子值。
在这种情况下,随机实际上是伪随机的。 给定一个种子,它将产生一个平均分配的数字。 但是用相同的种子,每次都会产生相同的数字序列。 如果你想改变,你必须改变你的种子。 很多人喜欢根据当前的时间或某种东西来生成种子。
Imho,当您再次使用random.seed(samedigit)
时,它被用来生成相同的随机过程结果。
In [47]: random.randint(7,10) Out[47]: 9 In [48]: random.randint(7,10) Out[48]: 9 In [49]: random.randint(7,10) Out[49]: 7 In [50]: random.randint(7,10) Out[50]: 10 In [51]: random.seed(5) In [52]: random.randint(7,10) Out[52]: 9 In [53]: random.seed(5) In [54]: random.randint(7,10) Out[54]: 9
#Simple python programme to understand random.seed() importance import random random.seed(10) for i in range(5): print(random.randint(1,100))
多次执行上述程序….
第一次尝试:在1 – 100范围内打印5个随机整数
第二次尝试:打印上面执行中出现的相同的5个随机数字。
第三次尝试:同样的
…..等等
说明:每次运行上面的程序,我们将种子设置为10,然后随机生成器将其作为参考variables。然后通过执行一些预定义的公式,生成一个随机数。
因此,在下次执行中将种子设置为10再次将参考数字设置为10,并再次开始相同的行为….
只要我们重置种子价值,它给出了相同的植物。
注意:更改种子值并运行程序,您将看到与上一个不同的随机序列。
这是一个小的testing,certificate用相同的参数提供seed()
方法将导致相同的伪随机结果:
# testing random.seed() import random def equalityCheck(l): state=None x=l[0] for i in l: if i!=x: state=False break else: state=True return state l=[] for i in range(1000): random.seed(10) l.append(random.random()) print "All elements in l are equal?",equalityCheck(l)