我正在尝试做一些分析,出于“原因”,我希望程序中的对象每个都有自己的种子,但没有全局种子。我可以完成这样的事情吗?
a = random.seed(seed1)
b = random.seed(seed1)
for a in range(5) :
print a.random(), b.random()
Run Code Online (Sandbox Code Playgroud)
预期输出将是
0.23 0.23
0.45 0.45
0.56 0.56
0.34 0.34
Run Code Online (Sandbox Code Playgroud)
等等......显然是一个超级人为的例子——这些单独的种子将被埋在对象中并对应于特定的事物。但第一步是让这样的事情发挥作用。
我怎样才能让 python 维护多个种子随机数?
您需要使用random.Random类对象。
from random import Random
a = Random()
b = Random()
a.seed(0)
b.seed(0)
for _ in range(5):
print(a.randrange(10), b.randrange(10))
# Output:
# 6 6
# 6 6
# 0 0
# 4 4
# 8 8
Run Code Online (Sandbox Code Playgroud)
该文件明确指出你的问题:
该模块提供的函数实际上是
random.Random类的隐藏实例的绑定方法。您可以实例化自己的实例Random以获取不共享状态的生成器。