【发布时间】:2012-09-04 08:11:27
【问题描述】:
如果我在模块的一个类中使用 Python 函数 random.seed(my_seed),这个种子是否会保留给在该模块中实例化的所有其他类?
【问题讨论】:
标签: python random scope random-seed
如果我在模块的一个类中使用 Python 函数 random.seed(my_seed),这个种子是否会保留给在该模块中实例化的所有其他类?
【问题讨论】:
标签: python random scope random-seed
是的,种子是为模块中的(隐藏的)全局Random() 实例设置的。来自documentation:
此模块提供的函数实际上是
random.Random类的隐藏实例的绑定方法。您可以实例化您自己的Random实例以获取不共享状态的生成器。
如果您需要将种子分开,请使用单独的 Random() 实例;你可以在实例化它时传入一个新种子:
>>> from random import Random
>>> myRandom = Random(anewseed)
>>> randomvalue = myRandom.randint(0, 10)
该类支持与模块相同的接口。
【讨论】:
eval( "random.random()" ) 也会尊重这个种子?
eval() 在这里并不特别;它仍然使用相同的命名空间,并从您运行 eval() 的全局变量中查找 random,找到相同的模块。