2026a

# randi


均匀分布的伪随机整数

函数库: TyMath

# 语法

X = randi(imax)

X = randi(imax, n)

X = randi(imax, sz1,...,szN)

X = randi(imax, sz)

X = randi((imin,imax),__)

X = randi(rng, __)

# 说明

X = randi(imax) 返回一个介于 1 和 imax 之间的伪随机整数标量。

X = randi(imax , n) 返回长度为 n 的向量,其中包含从区间 (1,imax) 的均匀离散分布中得到的伪随机整数。示例

X = randi(imax , sz1, ..., szN ) 返回 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,randi(10, 3, 4) 返回一个介于 1 和 10 之间的伪随机整数组成的 3×4 数组。示例

X = randi(imax , sz ) 返回一个数组,其中大小元组 sz 定义 size(X)。例如 rand(10, (3, 4)) 返回一个由介于 1 和 10 之间的伪随机整数组成的 3×4 数组。示例

X = randi((imin ,imax ),___) 使用以上任何语法返回一个数组,其中包含从区间 (imin,imax) 的均匀离散分布中得到的整数。

X = randi(rng , ...) 从随机数流 rng 而不是默认全局流生成整数。要创建一个流,请用 MT19937ar。在每次生成随机数前指定 rng,后跟上述语法中的任意参数组合。示例

# 示例

由随机整数组成的向量

生成一个由介于 1 和 10 之间的随机整数组成的 5 元素向量。randi 的第一个输入指示采样区间中的最大整数(采样区间中的最小整数为 1)。

using TyMath
r = randi(10, 5)
5-element Vector{Int64}:
 6
 8
 1
 7
 9
指定区间的随机整数

生成一个由样本区间 (-5, 5) 中均匀分布的随机整数组成的 10 元素向量。

using TyMath
r = randi((-5,5), 10)
10-element Vector{Int64}:
  1
 -5
 -1
  2
 -1
 -4
  0
  1
  3
  1
控制随机数生成

保存随机数生成器的状态并创建一个由随机整数组成的 1×5 矩阵。

using TyMath
rng = mt19937ar(5489);
r = randi(rng, 10, 1, 5)
1×5 Matrix{Int64}:
 9  10  2  10  7

将随机数生成器的状态恢复为 rng,然后创建一个由随机整数组成的新 1×5 矩阵。值与之前相同。

rng = mt19937ar(5489);
r = randi(rng, 10, 1, 5)
1×5 Matrix{Int64}:
 9  10  2  10  7
由随机整数组成的三维数组

创建一个由介于 1 和 500 之间的均匀分布的随机整数组成的 3×2×3 矩阵。

using TyMath
X = randi(500, (3, 2, 3))
3×2×3 Array{Int64, 3}:
[:, :, 1] =
 371  414
  32  101
 432  239

[:, :, 2] =
 236  456
 236  462
 162  384

[:, :, 3] =
 362   88
 121   71
 294  146
现有数组定义的大小和数值数据类型

创建一个 8 位有符号整数,和一个 2×2 矩阵。

using TyMath
imax = Int8(10)
p = [3 2;-2 1]

创建一个与 imax 具有相同类型,与 p 具有相同大小的数组。

sz = size(p)
X = randi(imax, sz)
2×2 Matrix{Int8}:
 8   5
 2  10
eltype(X)
Int8

# 输入参数

imax - 示例区间中的最大整数
正整数

示例区间中的最大整数,指定为一个正整数。randi 绘制示例区间 (1, imax) 中均匀分布的值。

示例: randi(10, 5)。

imin - 示例区间中的最小整数
1(默认)|整数标量

示例区间中的最小整数,指定为整数标量。

imin 和 imax 都必须为满足 的整数。

例如,randi((50, 100), 5) 返回一个由介于 50 和 100(包括二者)之间的随机整数组成的 5×1 向量。

n - 向量的长度
整数标量

向量的长度,指定为整数值。如果 n 为 0,则 X 为一个空向量。

数据类型: Int128 | Int64 | Int32 | Int16 | Int8 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128

sz1,...,szN - 每个维度的大小(作为单独参数)
一个或以上的非负整数值

每个维度的大小,指定为包含整数值的单独参数。

如果任何维度的大小为 0,则 X 为空数组。

sz - 每个维度的大小(作为元组)
非负整数元组

每个维度的大小,指定为由整数组成的元组,此元组的每个元素指示对应维度的大小。

如果任何维度的大小为 0,则 X 为空数组。

rng - 随机数流

随机数流,指定为 MT19937ar 对象。

示例: rng = MT19937ar(1234); randi(rng, (5,10) ,(3,1))。

# 另请参阅

rand | randn