如果我为RNG设置了种子,例如 switch (subArea)
{
// Skipping regular cases with string literals
case string dummy
when subArea.StartsWith("3*") ||
subArea.StartsWith("03*"):
return "123";
default:
return "ABCXYZ123";
}
,我叫一个子模块,RNG的状态会保持吗?
例如
numpy.random.seed(0)
# some_lib.py
def do_thing():
return numpy.random.rand()
孩子会使用父母设置的numpy状态吗?
答案 0 :(得分:3)
种子是numpy
所有用途的全局值。因此,只要子模块不重新设定其种子状态,或不确定地从其获取值(在推进旧模块的基础上有效地将其调整为新种子),则该种子将被保留。
大多数PRNG库都是以这种方式运行的,因为替代方法几乎没有用。对于可重现的测试,您想要能够设置一次种子,并使所有内容都依赖于该稳定的种子。如果存在每个模块的种子,则测试模块无法为被测试模块使用的PRNG注入种子。
答案 1 :(得分:1)
在测试中,似乎numpy的RNG状态由子进程维护。