0

我正在关注这个例子 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 作为参数传递时,这是否意味着第一个值是 1
4

2 回答 2

3

前两个序列是相同的,因为您为它们播种了相同的值。这是一个特点

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

于 2013-03-09T12:53:30.413 回答
2

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

rnd = random.Random(int(round(time.time() * 1000)))
于 2013-03-09T10:45:10.270 回答