本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

randi

均匀分布的伪随机整数

说明

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

示例

X = randi(imax,n) 返回 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)。例如,randi(10,[3,4]) 返回一个由介于 1 和 10 之间的伪随机整数组成的 3×4 数组。

X = randi(imax,classname) 返回一个伪随机整数,其中 classname 指定数据类型。classname 可以为 'single''double''int8''uint8''int16''uint16''int32''uint32'

X = randi(imax,n,classname) 返回数据类型为 classnamen×n 数组。

示例

X = randi(imax,sz1,...,szN,classname) 返回数据类型为 classnamesz1×...×szN 数组。

X = randi(imax,sz,classname) 返回一个数组,其中大小向量 sz 定义 size(X)classname 定义 class(X)

X = randi(imax,'like',p) 返回一个类如 p 的伪随机整数;即,具有相同的数据类型(类)。

X = randi(imax,n,'like',p) 返回一个类如 pn×n 数组。

X = randi(imax,sz1,...,szN,'like',p) 返回一个类如 psz1×...×szN 数组。

示例

X = randi(imax,sz,'like',p) 返回一个类如 p 的数组,其中大小向量 sz 定义 size(X)

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

示例

全部折叠

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

r = randi(10,5)
r = 5×5

     9     1     2     2     7
    10     3    10     5     1
     2     6    10    10     9
    10    10     5     8    10
     7    10     9    10     7

生成一个由样本区间 [-5,5] 中均匀分布的随机整数组成的 10×1 列向量。

r = randi([-5,5],10,1)
r = 10×1

     3
     4
    -4
     5
     1
    -4
    -2
     1
     5
     5

保存随机数生成器的当前状态并创建一个由随机整数组成的 1×5 向量。

s = rng;
r = randi(10,1,5)
r = 1×5

     9    10     2    10     7

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

rng(s);
r1 = randi(10,1,5)
r1 = 1×5

     9    10     2    10     7

始终使用 rng函数(而不是 randrandn 函数)指定随机数生成器的设置。有关详细信息,请参阅 更换不推荐的 rand 和 randn 语法

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

X = randi(500,[3,2,3])
X = 
X(:,:,1) =

   408   457
   453   317
    64    49


X(:,:,2) =

   140   483
   274    79
   479   486


X(:,:,3) =

   479    71
   243   211
   401   458

创建一个由其元素为 int16 类型的随机数组成的 1×4 向量。

r = randi(100,1,4,'int16')
r = 1x4 int16 row vector

   82   91   13   92

class(r)
ans = 
'int16'

创建一个由介于 1 和 10 之间的均匀分布的随机整数组成并且大小与现有数组相同的矩阵。

A = [3 2; -2 1];
sz = size(A);
X = randi(10,sz)
X = 2×2

     9     2
    10    10

它是一种将前两行代码合并成一行的常见模式:

X = randi(10,size(A));

创建一个由 8 位有符号整数组成的 2×2 矩阵。

p = int8([3 2; -2 1]);

创建一个与 p 具有相同大小和数据类型的由随机整数组成的数组。

X = randi(10,size(p),'like',p)
X = 2x2 int8 matrix

    9    2
   10   10

class(X)
ans = 
'int8'

输入参数

全部折叠

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

示例: randi(10,5)

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

iminimax 都必须为满足 iminimax 的整数。

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

方阵的大小,指定为整数值。

  • 如果 n0,则 X 为一个空矩阵。

  • 如果 n 为负数,则将其视为 0

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,randi 忽略大小为 1 的尾部维度。例如,randi([5,10],3,1,1,1) 生成由 5 和 10 之间的随机整数组成的 3×1 向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,randi 忽略大小为 1 的尾部维度。例如,randi([5,10],[3,1,1,1]) 生成由 5 和 10 之间的随机整数组成的 3×1 向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出类,指定为 'double''single''int8''uint8''int16''uint16''int32''uint32' 或提供 randi 支持的另一个类的名称。

示例: randi(5,5,'int8')

数据类型: char

要创建的数组的原型,指定为数值数组。

示例: randi(5,5,'like',p)

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

提示

  • randi 生成的数字序列由均匀伪随机数生成器的内部设置决定,该生成器是 randrandirandn 的基础。您可以使用 rng 控制这一共享的随机数生成器。

  • randi 返回的数组可能包含重复的整数值。此行为有时称为替换采样。如果您需要所有的唯一值,请使用 randperm

扩展功能

在 R2008b 中推出