numpy.random --- 随机数生成

numpy.random 子模块提供了一个 Generator 类,用于从常见的概率分布中抽取样本。其底层算法为置换同余生成器(PCG);详情参见 https://www.pcg-random.org/

Generator 是一个有状态对象:每次调用其某个采样方法都会推进内部状态,因此连续调用会返回相互独立的样本。输出数组的 dtype 始终为 numpy.float

class numpy.random.Generator(seed: int | tuple[int, ...] | None = None)

构造一个新的伪随机数生成器。

参数:

seed -- 用于初始化生成器状态的种子。如果提供的是整数,则直接使用该整数。如果提供的是整数元组,则会返回一个独立设种子的 Generator 对象元组(每个元素对应一个对象),而不是单个实例。如果提供的是 None,则使用平台默认种子(前提是在构建时配置了默认种子);否则会抛出 ValueError

抛出:
  • TypeError -- 如果 seed 不是 None、整数或整数元组。

  • ValueError -- 如果 seedNone 且未配置默认种子。

normal(loc: float = 0.0, scale: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

从正态(高斯)分布中抽取样本。

参数:
  • loc -- 分布的均值(中心)。

  • scale -- 分布的标准差(宽度)。必须为非负值。

  • size -- 输出的形状。如果是整数,则返回该长度的一维数组。如果是元组,则返回该形状的数组。如果是 None(默认值),则返回单个 Python float

返回:

返回 Python float 或所请求形状的浮点型 numpy.ndarray

抛出:
  • ValueError -- 如果所请求的形状超过 ULAB_MAX_DIMS

  • TypeError -- 如果 size 既不是 None、整数也不是元组。

样本使用 Box-Muller 变换生成。

random(size: int | tuple[int, ...] | None = None, *, out: ndarray | None = None) float | ndarray

从半开区间 [0.0, 1.0) 上的均匀分布中抽取样本。

参数:
  • size -- 输出的形状。如果是整数,则返回该长度的一维数组。如果是元组,则返回该形状的数组。如果为 None(默认值)且 out 也为 None,则返回单个 Python float

  • out -- 一个可选的预分配、密集的浮点型 numpy.ndarray,用于接收样本。如果同时提供 sizeout,它们的形状必须一致。

返回:

根据参数返回 Python float、新的 numpy.ndarrayout(填充了样本)。

抛出:
  • TypeError -- 如果 size 类型不受支持,或 out 不是 ndarray,或 out 的 dtype 不是 float

  • ValueError -- 如果所请求的形状超过 ULAB_MAX_DIMS,如果 sizeout.shape 不一致,或如果 out 不连续。

uniform(low: float = 0.0, high: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

从半开区间 [low, high) 上的均匀分布中抽取样本。

参数:
  • low -- 分布的下界(包含)。

  • high -- 分布的上界(不包含)。

  • size -- 输出的形状。如果是元组,则返回该形状的数组。如果为 None(默认值),则返回从 [0.0, 1.0) 中抽取的单个 Python float(在标量情形下,low/high 边界会被忽略)。

返回:

返回 Python float 或所请求形状的浮点型 numpy.ndarray

抛出:
  • ValueError -- 如果所请求的形状超过 ULAB_MAX_DIMS

  • TypeError -- 如果 size 既不是 None 也不是元组。

在使用相同的默认参数时,uniform() 生成的序列与 random() 相同。