gpt4 book ai didi

python - numpy.random 的 Generator 类和 np.random 方法有什么区别?

转载 作者:行者123 更新时间:2023-12-04 12:39:49 26 4
gpt4 key购买 nike

通过调用诸如 np.random.choice() 之类的方法,我一直在使用 numpy 的随机功能。或 np.random.randint()等等。
我刚刚发现了创建 default_rng 的能力对象或其他 Generator 对象:

from numpy.random import default_rng
gen = default_rng()
random_number = gen.integers(10)

到目前为止,我会一直使用
np.random.randint(10)

相反,我想知道这两种方式之间的区别是什么。

我能想到的唯一好处是跟踪多个种子,或者想要使用特定的 PRNG,但也许更通用的用例也存在差异?

最佳答案

numpy.random.*函数(包括 numpy.random.binomial )使用一个全局伪随机数生成器 (PRNG) 对象,该对象在整个应用程序中共享。另一方面,default_rng()是一个独立的 Generator 对象,不依赖于全局状态。
如果您不关心应用程序中可重现的“随机性”,那么这两种方法暂时是等效的。虽然 NumPy's new RNG policy一般不鼓励使用全局状态,它没有弃用任何 numpy.random.* 1.17 版中的功能,尽管 NumPy 的 future 版本可能会。
还要注意,因为 numpy.random.*函数依赖于非线程安全的全局 PRNG 对象,这些函数 can cause race conditions如果您的应用程序使用多个线程。 ( Generator 对象也不是线程安全的,但有一些方法可以使用 generate pseudorandom numbers via multithreading ,而无需跨线程共享 PRNG 对象。)

关于python - numpy.random 的 Generator 类和 np.random 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60599149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com