为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2022-08-25 15:39:37
我一直在使用numpy的随机功能一段时间,通过调用诸如or等方法。我刚刚发现了创建对象或其他生成器对象的能力:np.random.choice()np.random.randint()default_rngfrom numpy.random import default_rng gen = default_rng() random_number = gen.integers(10)到目前为止,我一直使用np.random.randint(10)相反,我想知道这两种方式之间的区别是什么。我能想到的唯一好处是跟踪多个种子,或者想要使用特定的PRNG,但也许对于更通用的用例也存在差异?
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

numpy.random.*函数(包括)使用在应用程序中共享的全局伪随机数生成器(PRNG)对象。另一方面,是不依赖于全局状态的独立生成器对象。numpy.random.binomialdefault_rng()

如果您不关心应用程序中可重现的“随机性”,则这两种方法暂时是等效的。尽管NumPy的新RNG策略通常不鼓励使用全局状态,但它并没有弃用1.17版本中的任何功能,尽管NumPy的未来版本可能会。numpy.random.*

另请注意,由于函数依赖于非线程安全的全局 PRNG 对象,因此,如果应用程序使用多个线程,则这些函数可能会导致争用情况。( 对象也不是线程安全的,但是有一些方法可以通过多线程生成伪随机数,而无需在线程之间共享 PRNG 对象。numpy.random.*Generator


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号