Ale*_*eue 3 python random numpy
如果我为我的 RNG 设置了一个种子,例如numpy.random.seed(0)
我调用了一个子模块,RNG 的状态会被保持吗?
例如
# some_lib.py
def do_thing():
return numpy.random.rand()
Run Code Online (Sandbox Code Playgroud)
# parent module
import some_lib
numpy.seed(0)
...
some_lib.do_thing()
Run Code Online (Sandbox Code Playgroud)
父级设置的 numpy 状态会被子级使用吗?
种子是 的所有用途的全局值numpy
。因此,只要子模块不重新为其设定种子,或不确定地从中提取值(根据推进旧的有效地将其调整为新种子),则种子将被保留。
大多数 PRNG 库的行为都是这样,因为替代方案非常无用;对于可重复的测试,您希望能够设置一次种子,并让一切都依赖于那个稳定的种子。如果存在每个模块的种子,则测试模块无法为被测试模块使用的 PRNG 设置种子。