我习惯于输入 random.randrange
。从现在开始,我将执行 from random import Random
来发现错误。
对于涉及程序生成的游戏(不,不是 Minecraft 克隆 :p)我想保留几个不同的伪随机数生成器:
- 一个用于生成世界(风景、任务等),
- 一个是关于世界上可能发生的随机事件(例如战斗中的伤害)。
理由是我希望能够重现第一个,所以我不希望第二个干扰。
我认为 random.Random
就是为此而生的。然而有些事情让我感到困惑:
import random
rnd = random.Random()
rnd.seed(0)
print [random.randrange(5) for i in range(10)]
rnd.seed(0)
print [random.randrange(5) for i in range(10)]
产生两个不同的序列。当我执行 rnd = random
时,事情会按预期工作,但我确实需要多个生成器。
我错过了什么?
最佳答案
它几乎完全按照您的尝试工作,但 rnd.seed() 适用于 rnd 对象
只是使用
rnd = random.Random(0) # <<-- or set it here
rnd.seed(7)
print [rnd.randrange(5) for i in range(10)]
或者像这样设置全局种子:
random.seed(7)
print [random.randrange(5) for i in range(10)]
关于python - python 的 random.Random.seed 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009572/