为何numpy.random.randn每次执行生成相同值?
原因分析及解决方案
你每次执行代码得到相同结果的核心原因是固定了随机数生成器的种子:
np.random.seed(1)
NumPy的随机数生成器基于伪随机算法,它需要一个初始"种子"值来确定生成随机数的起始状态。当你设置固定种子(比如这里的1),每次运行代码时,生成器都会从同一个起始状态生成随机数,自然会得到完全相同的序列。
解决方法
- 移除固定种子语句:直接删除
np.random.seed(1),生成器会自动使用基于系统时间或其他随机源的动态种子,每次生成的随机数就会不同。 - 使用动态种子:如果需要可控但每次不同的随机序列,可以用当前时间作为种子:
import numpy as np import time np.random.seed(int(time.time())) # 后续随机数生成代码
补充说明:伪随机数的"伪"体现在它的可预测性,固定种子的设计初衷是为了让实验结果可复现,方便调试和验证代码逻辑。
内容的提问来源于stack exchange,提问作者HMD
相关产品推荐
相关产品推荐

