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

标签 python

我习惯于输入 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/

相关文章:

python - 更新中间文件时防止规则重新运行

python - mpi4py 返回排名差异

python django 在服务器中运行 bash 脚本

python - 应用 vs 嵌套 for 循环

python - 如何在 Python 3 中打开受密码保护的 zip 文件

python - 有没有办法使用用户输入来调用函数?

python - 为什么 numpy.ndarray.resize() 返回 None

Python Connexion - 响应修剪

python - 如何在调试Eclipse PyDev时查看变量内容?

python - 如何在没有任何 CAN 硬件的 2 台 Linux 机器之间发送和接收 CAN 消息?