2013-03-09 76 views
0

我下面这个例子 https://stackoverflow.com/a/9009657/1890488如何蟒蛇random.seed工作

他有这个作为结果

>>> import random 
>>> rnd = random.Random(0) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6] 
>>> rnd = random.Random(0) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6] 
>>> rnd = random.Random(1) 
>>> [rnd.randint(0, 10) for i in range(10)] 
[1, 9, 8, 2, 5, 4, 7, 8, 1, 0] 

我有几个问题

  1. 为什么前两个序列是同样
  2. 当我们通过1作为参数dos它意味着那么第一个值如何来作为1

回答

3

前两个序列是一样的,因为你用相同的种子值它们。这是功能

可设定的种子使您可以通过重复使用相同的种子来有意地重复您的序列。例如,这可以用来实现完全等同于原始游戏的游戏重放,尽管该游戏使用随机数生成器来进行游戏中的相遇或某些AI决策。

+0

因此,这意味着,如果我给那么相同的种子每'N'迭代将是同为任意数量的randomnumber发电机 – user196264097 2013-03-09 13:45:28

+0

@ user196264097是的,如果你给了相同的种子,你会得到相同的序列出来的发电机。这就是伪随机数发生器的工作原理。 – user4815162342 2013-03-09 14:21:45

2

因为它只是一个伪随机生成器。这是函数(数学意义上),它具有很好的平方分布。常见的做法是使用系统时间以毫秒为单位种子:

rnd = random.Random(int(round(time.time() * 1000)))