为什么使用numpy生成的随机值每次运行代码都不发生变化?
NumPy随机数每次运行结果不变解决方法
原因说明
传入固定随机种子是导致结果不变的核心原因:
你使用的np.random.default_rng(12345)中,传入的12345就是随机种子。NumPy采用伪随机算法生成随机数,固定种子会完全确定后续的随机数序列,这个特性是专门设计用于保障实验结果可复现的,因此你每次运行都会得到完全相同的6个数值。
解决方法
- 如果你不需要复现之前的结果,仅需要每次运行得到不同的随机值,初始化生成器时不要传入固定种子即可,修改后代码如下:
import numpy as np # 无参数初始化时,生成器会自动调用系统熵源生成随机初始状态 rng = np.random.default_rng() sizes = rng.integers(low=0, high=500, size=6) print(sizes)
- 如果你需要先复现指定种子的结果、之后再生成不重复的随机序列,可以保留种子初始化逻辑,在需要切换随机状态时调用
rng.bit_generator.seed_seq重新生成随机种子即可。
内容的提问来源于stack exchange,提问作者nao
相关产品推荐
相关产品推荐

