首页 > 解决方案 > 如何播种 scipy.stats.norm.rvs 并让它使用 PCG64 BitGenerator?

问题描述

这个答案提供了一个简短的介绍scipy.stats.norm.rv

为了播种这个函数,我做了以下事情并得到了以下结果。

>>> norm.rvs(size=10, random_state=12345)
array([-0.20470766,  0.47894334, -0.51943872, -0.5557303 ,  1.96578057,
        1.39340583,  0.09290788,  0.28174615,  0.76902257,  1.24643474]

问题:

  1. 对于 NumPy v1.19,这个函数是使用 NumPy 的SeedSequence还是传统的播种算法来播种生成器?如果是前者,我如何将其传递child_seedsSeedSequence它?

  2. 如何scipy.stats.norm.rv使用numpy.random.default_rng()BitGenerator (PCG64) 而不是 MT19937 BitGenerator。根据NumPy 的文档,我知道这RandomState是指 NumPy 的 Legacy Random Generation,即 MT19937 BitGenerator。我做了以下事情并得到了一个例外:

    >>> from scipy.stats import norm
    >>> from numpy.random import default_rng
    >>> rg = default_rng( 12345 )
    >>> norm.rvs(size=10, random_state=rg)
    ValueError: Generator(PCG64) at 0x7F19E528D228 cannot be used to seed a numpy.random.RandomState instance
    

标签: pythonnumpyscipy

解决方案


推荐阅读