numpy.random.Generator.integers#

方法

random.Generator.integers(low, high=None, size=None, dtype=np.int64, endpoint=False)#

返回从 low(包含)到 high(不包含)的随机整数,或者如果 endpoint=True,则返回从 low(包含)到 high(包含)的随机整数。替换 RandomState.randint(endpoint=False)和 RandomState.random_integers(endpoint=True)

从指定 dtype 的“离散均匀”分布中返回随机整数。如果 high 为 None(默认值),则结果从 0 到 low

参数:
lowint 或类数组的 ints

从分布中抽取的最低(带符号)整数(除非 high=None,在这种情况下,此参数为 0,此值用于 high)。

highint 或类数组的 ints,可选

如果提供,则为从分布中抽取的最大的(带符号)整数之上(参见上面关于 high=None 的行为)。如果为类数组,则必须包含整数值。

sizeint 或 ints 元组,可选

输出形状。如果给定的形状为,例如,(m, n, k),则将抽取 m * n * k 个样本。默认值为 None,在这种情况下将返回单个值。

dtypedtype,可选

所需结果的 dtype。字节序必须为本地字节序。默认值为 np.int64。

endpointbool,可选

如果为 True,则从区间 [low, high] 而不是默认的 [low, high) 中采样。默认为 False。

返回:
outint 或 ints 的 ndarray

来自适当分布的随机整数的 size 形状数组,或者如果没有提供 size,则为单个这样的随机整数。

备注

当使用 uint64 dtype 进行广播时,最大值 (2**64) 无法表示为标准整数类型。high 数组(如果 high 为 None,则为 low)必须具有 object dtype,例如,array([2**64])。

参考文献

[1]

Daniel Lemire。“区间内快速随机整数生成”,ACM 建模和计算机仿真汇刊 29 (1),2019,https://arxiv.org/abs/1805.10941

示例

>>> rng = np.random.default_rng()
>>> rng.integers(2, size=10)
array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])  # random
>>> rng.integers(1, size=10)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

生成一个 2 x 4 的整数数组,范围在 0 到 4(包含)之间。

>>> rng.integers(5, size=(2, 4))
array([[4, 0, 2, 1],
       [3, 2, 2, 0]])  # random

生成一个 1 x 3 的数组,具有 3 个不同的上限。

>>> rng.integers(1, [3, 5, 10])
array([2, 2, 9])  # random

生成一个 1 x 3 的数组,具有 3 个不同的下限。

>>> rng.integers([1, 5, 7], 10)
array([9, 8, 7])  # random

使用 dtype 为 uint8 的广播生成一个 2 x 4 的数组。

>>> rng.integers([1, 3, 5, 7], [[10], [20]], dtype=np.uint8)
array([[ 8,  6,  9,  7],
       [ 1, 16,  9, 12]], dtype=uint8)  # random