Main Content

randperm

整数的随机排列

说明

示例

p = randperm(n) 返回行向量,其中包含从 1 到 n 没有重复元素的整数随机排列。

示例

p = randperm(n,k) 返回行向量,其中包含在 1 到 n 之间随机选择的 k 个唯一整数。

p = randperm(s,___) 从随机数流 s 而不是默认全局流生成整数的随机排列。要创建一个流,请使用 RandStream。指定 s,后跟上述语法中的任何参数组合。

示例

全部折叠

生成一个从 1 到 6 的整数的随机排列。randperm 的输入指示采样间隔中的最大整数(采样区间中的最小整数为 1)。

r = randperm(6)
r = 1×6

     6     3     5     1     2     4

生成一个从整数 1 到 8 中随机选择的四个唯一整数(没有重复元素)的随机排列。

r1 = randperm(8,4)
r1 = 1×4

     6     4     7     3

生成四个唯一整数的另一个随机排列。

r2 = randperm(8,4)
r2 = 1×4

     8     7     5     4

保存随机数生成器的当前状态,并创建一个从 1 到 8 的整数的随机排列。

s = rng;
r = randperm(8)
r = 1×8

     6     3     7     8     5     1     2     4

将随机数生成器的状态恢复为 s,然后创建由从 1 到 8 的整数组成的新随机排列。排列和以前一样。

rng(s)
r1 = randperm(8)
r1 = 1×8

     6     3     7     8     5     1     2     4

您可以使用 rng 函数来指定随机数生成器的设置。

输入参数

全部折叠

采样间隔中的整数数量,指定为正整数。randperm 排列从 1 到 n(包括二者)的整数值。

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

所选整数的数量,指定为正整数。k 还必须小于或等于 n

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

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

示例: s = RandStream('dsfmt19937'); randperm(s,10)

提示

  • randperm 生成的数字序列由均匀伪随机数生成器的内部设置决定,该生成器是 randrandirandnrandperm 的基础。要控制共享随机数生成器,请使用 rng 函数。

  • randperm 返回的数组包含不重复整数值的整数排列。此行为有时称为无放回抽样。如果需要重复值,请使用 randi 函数。

  • randperm(n)randperm(n,n) 通过都生成整数 1 到 n 的排列,但它们可以在排列中给出不同随机顺序。对于大数字 nrandperm(n,n)randperm(n) 更快。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出