You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy default_rng设置随机种子,重复运行结果不一致问题求助

问题原因及解决方法

核心问题

你代码里的normal()调用的是全局numpy随机生成器,而非每个worker内部创建的rng实例的方法。全局生成器的状态会在每次调用时被修改,导致多次运行结果不一致,而且完全没用到你为每个worker单独初始化的rng对象。

修正代码

把print(normal())改成print(rng.normal()),确保使用每个worker独立的随机生成器:

from numpy.random import default_rng, normal

def worker(root_seed, worker_id):
    rng = default_rng([worker_id, root_seed])
    print(rng.normal())  # 改用当前worker的rng实例方法

root_seed = 0x8c3c010cb4754c905776bdac5ee7501
results = [worker(root_seed, worker_id) for worker_id in range(5)]

更规范的并行种子设置(官方推荐)

使用SeedSequence衍生独立子种子,避免手动构造种子列表,更适配并行场景:

from numpy.random import SeedSequence, default_rng

def worker(seed):
    rng = default_rng(seed)
    print(rng.normal())

root_seed = 0x8c3c010cb4754c905776bdac5ee7501
ss = SeedSequence(root_seed)
worker_seeds = ss.spawn(5)  # 生成5个互不干扰的子种子
results = [worker(seed) for seed in worker_seeds]

这样无论串行还是并行运行,相同根种子下每个worker的输出都会完全一致,且各worker的随机序列互相独立,不会产生状态干扰。

内容的提问来源于stack exchange,提问作者user2974951

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:22:07