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 时)

返回指定数据类型的”离散均匀”分布的随机整数.如果 high 是 None(默认值),则结果从 0 到 low.

参数:
low整数或整数类数组

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

high整数或整数数组,可选

如果提供,则比要从分布中抽取的最大(有符号)整数大一个(如果 high=None,请参见上面的行为).如果是类数组对象,则必须包含整数值

size整数或整数的元组,可选

输出形状.如果给定的形状是,例如,``(m, n, k)``,那么会抽取 m * n * k 个样本.默认是 None,在这种情况下会返回一个单一值.

dtypedtype,可选

期望的结果数据类型.字节顺序必须是本地的.默认值是 np.int64.

endpointbool, 可选

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

返回:
out整数或整数的ndarray

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

备注

在使用 uint64 数据类型的广播时,最大值(2**64)不能表示为标准整数类型.高数组(或如果高为 None 时的低数组)必须具有对象数据类型,例如,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])

生成一个包含 0 到 4 之间的整数的 2 x 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 行 3 列的数组,具有 3 个不同的下界

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

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

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