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 -- 如果 seed 为
None且未配置默认种子。
- normal(loc: float = 0.0, scale: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray¶
从正态(高斯)分布中抽取样本。
- 参数:
loc -- 分布的均值(中心)。
scale -- 分布的标准差(宽度)。必须为非负值。
size -- 输出的形状。如果是整数,则返回该长度的一维数组。如果是元组,则返回该形状的数组。如果是
None(默认值),则返回单个 Pythonfloat。
- 返回:
返回 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,则返回单个 Pythonfloat。out -- 一个可选的预分配、密集的浮点型
numpy.ndarray,用于接收样本。如果同时提供 size 和 out,它们的形状必须一致。
- 返回:
根据参数返回 Python
float、新的numpy.ndarray或 out(填充了样本)。- 抛出:
TypeError -- 如果 size 类型不受支持,或 out 不是 ndarray,或 out 的 dtype 不是
float。ValueError -- 如果所请求的形状超过
ULAB_MAX_DIMS,如果 size 与out.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)中抽取的单个 Pythonfloat(在标量情形下,low/high 边界会被忽略)。
- 返回:
返回 Python
float或所请求形状的浮点型numpy.ndarray。- 抛出:
ValueError -- 如果所请求的形状超过
ULAB_MAX_DIMS。TypeError -- 如果 size 既不是
None也不是元组。