用numpy rng重现numpy随机数



我有一个脚本使用np.random.randintnp.random.seed(0)播种。现在我想知道如何通过创建一个单独的rng对象rng = np.random.default_rng(0)来获得相同的数字。我天真地以为这两种方式是相同的,但显然情况并非如此。原因是我试图从使用内置方法的一些脚本中重现一些错误,但不幸的是,现在另一个脚本也影响了内置RNG的状态,这就是为什么我想解耦这些。

谁能告诉我我要做什么才能从rng中得到与我从np.random中得到的相同的数字?

的原因
import numpy as np
def builtin(seed=0):
    np.random.seed(seed)
    print(np.random.randint(0, 10, 5))
def default(seed=0):
    rng = np.random.default_rng(seed)
    print(rng.integers(0, 10, 5))
# unfortunately do not produce the same results:
builtin()
default()

numpy.random.default_rng使用新样式的生成器API。这在很大程度上优于旧的功能,并且应该优先在新代码中使用,除非您有特定的理由不使用它,但它与旧的API不向后兼容。

旧API创建新RNG对象的方法是numpy.random.RandomState:

rng = np.random.RandomState(0)
print(rng.randint(0, 10, 5))

最新更新