繁体   English   中英

通过numpy.random.seed设置的随机种子是否在子模块之间维护?

[英]Does a random seed set via numpy.random.seed maintain across submodules?

如果我为RNG设置了一个种子,例如numpy.random.seed(0)并调用了一个子模块,那么RNG的状态会保持吗?

例如

# some_lib.py
def do_thing():
  return numpy.random.rand()
# parent module
import some_lib
numpy.seed(0)
...
some_lib.do_thing()

父母设置的numpy状态会被孩子使用吗?

种子是numpy所有用途的全局值。 因此,只要子模块不重新设定其种子状态,或不确定地从其获取值(在推进旧模块的基础上有效地将其调整为新种子),则将保留该种子。

大多数PRNG库都是以这种方式运行的,因为替代方法几乎没有用。 对于可重现的测试,您希望能够设置一次种子,并使所有内容都依赖该稳定的种子。 如果存在每个模块的种子,则测试模块无法为被测试模块使用的PRNG注入种子。

在测试中,似乎numpy的RNG状态由子进程维护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM