Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过numpy.random.seed的随机种子集是否跨子模块维护?_Python_Numpy_Random - Fatal编程技术网

Python 通过numpy.random.seed的随机种子集是否跨子模块维护?

Python 通过numpy.random.seed的随机种子集是否跨子模块维护?,python,numpy,random,Python,Numpy,Random,如果我为我的RNG设置一个种子,例如numpy.random.seed(0),然后我调用一个子模块,RNG的状态会保持吗 e、 g 父进程设置的numpy状态是否会被子进程使用?在测试中,似乎numpy的RNG状态由子进程维护。种子是所有使用numpy的全局值。因此,只要子模块没有对其重新设定种子,或者不确定地从中提取值(在推进旧种子的基础上有效地将其调整为新种子),那么种子将被保留 大多数PRNG库的行为都是这样的,因为替代方案是毫无用处的;对于可重复的测试,您希望能够设置一次种子,并使所有内

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

e、 g


父进程设置的numpy状态是否会被子进程使用?

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

种子是所有使用
numpy
的全局值。因此,只要子模块没有对其重新设定种子,或者不确定地从中提取值(在推进旧种子的基础上有效地将其调整为新种子),那么种子将被保留


大多数PRNG库的行为都是这样的,因为替代方案是毫无用处的;对于可重复的测试,您希望能够设置一次种子,并使所有内容都依赖于稳定的种子。如果存在每个模块种子,则测试模块无法为正在测试的模块使用的PRNG种子。

Python的设计很有帮助。导入的模块是单例的,在其他位置重新导入会返回对同一模块的引用。@markransem:Yup。
reload
函数可能会稍微弄乱这一点,手动弄乱
sys.modules
,但这种胡说八道只会出现在交互式会话中,而不会出现在“真实”代码中。
# some_lib.py
def do_thing():
  return numpy.random.rand()
# parent module
import some_lib
numpy.seed(0)
...
some_lib.do_thing()