python random.seed是如何工作的

时间:2013-03-09 10:38:04

标签: python random

我正在关注这个例子 https://stackoverflow.com/a/9009657/1890488

他将此作为结果

>>> 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

2 个答案:

答案 0 :(得分:3)

前两个序列是相同的,因为您使用相同的值为它们播种。这是一个功能

Setable seed使您可以通过重复使用相同的种子来有意重复序列。例如,这可用于实现与原始游戏完全等效的游戏重放,尽管游戏使用随机数生成器进行游戏中的遭遇或用于某些人工智能决策。

答案 1 :(得分:2)

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

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