正确播种 numpy 随机生成器

问题描述 投票:0回答:1

对于我的科学实验,我通常使用以下种子:

rng = np.random.Generator(np.random.PCG64(seed))

对于当前的 numpy 版本相当于

rng = np.random.Generator(np.random.default_rng(seed))

当我重复实验

n
次并对结果进行平均时,我通常将
seed
设置为
0
n
之间的所有数字。

但是,阅读文档这里这里它指出

种子应该是大的正整数。

我们默认使用从操作系统收集的熵的 128 位整数。这是初始化 numpy 中所有生成器的大量熵。我们不建议将低于 32 位的小种子用于一般用途。

然而,在第二个参考文献中,它也指出了

结果本身不会有任何问题;由于 SeedSequence 的处理,即使种子为 0 也完全没问题。

这感觉很矛盾,我想知道,现在小种子是否完全可以使用,或者应该转向更高的种子。特别是,我想知道,(i)在什么时候(如果有的话)大种子会对低种子产生影响,以及(ii)如果进行科学实验(例如机器学习/算法研究),人们应该更喜欢较高种子而不是较低种子还是应该没有区别?

PS:这个问题与numpy中的随机数种子高度相关,但涉及现在推荐的生成器。此外,答案似乎不够深入,因为它没有包括关于高种子和低种子的讨论。

numpy machine-learning random random-seed numpy-random
1个回答
1
投票

理由位于您链接的快速启动页面

我们建议使用非常大、独特的数字,以确保您的种子与其他人的不同。这是一个很好的做法,可以确保您的结果在统计上独立于他们的结果,除非您有意尝试重现他们的结果。

简而言之,这是为了通过生成完全相同的数据集来避免重现其他人的偏见(如果有的话),因为人类更有可能默认选择短数字(

0
11
42
)而不是非常大的。

在您的用例中,这可能并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.