PHP前端开发

为什么使用相同的种子会得到不同的随机数?

百变鹏仔 1个月前 (01-18) #Python
文章标签 随机数
问题内容

我正在使用具有以下 mwe 的 numpy 随机数生成器:

import numpy as npnp.random.seed(40)print(np.random.randint(-3, 4))rng = np.random.default_rng(seed=40)print(rng.integers(-3, 4))

输出:

30

为什么输出不同?


正确答案


numpy.random.randint 和 numpy.random.seed 使用旧的随机 API,其底层实现完全不同。 numpy.random.default_rng 创建一个 Generator 对象,这是新的 API。

这两个 API 实际上是两个完全独立的 RNG 库,恰好位于同一命名空间中。即使使用相同的种子,输出也不会匹配。