numpy.random种子合理取值规模探讨:模2^32等效性疑问
NumPy随机种子的取值规模与等效性说明
- NumPy的
np.random.seed()对输入种子会做模2^32处理,也就是说不管输入的种子数值多大,最终实际生效的是种子值 % 2^32。比如你用的10000000000,实际生效的是10000000000 % 4294967296 = 1410065408,超过2^32的部分不会产生新的随机序列。 - 合适的种子取值规模就是0到2^32-1,这个范围已经能覆盖所有可能的初始随机状态,再大的数值也不会带来额外的随机性。你当前用
np.random.randint(10000000000)生成种子,和用np.random.randint(2**32)效果完全一致。 - 实际使用时,直接生成0到2^32-1之间的整数作为种子就足够满足复现需求,不需要用更大的数值范围。如果是新版本NumPy,也可以用
np.random.SeedSequence生成更规范的种子,但普通的seed()方法完全能应对简单复现场景。
内容的提问来源于stack exchange,提问作者zjs
相关产品推荐
相关产品推荐

