python 的 random.Random.seed 是如何工作的?

2024-03-12

我习惯打字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然后事情按预期进行,但我确实需要几个发电机。

我缺少什么?


它的工作原理几乎与您尝试的完全一样,但 end.seed() 适用于结尾object

只需使用

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)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 的 random.Random.seed 是如何工作的? 的相关文章

随机推荐