HOWTO · MATLAB

使用 MATLAB 進行隨機排列

可以使用 MATLAB 中的 randperm() 函式生成包含整數隨機排列的向量。

本頁內容

本教程將討論使用 MATLAB 中的 randperm() 函式生成包含整數隨機排列的向量。

使用 MATLAB 中的 randperm() 函式生成包含整數隨機排列的向量

我們可以使用 MATLAB 的內建函式 randperm() 來生成包含整數隨機排列的向量。我們可以在 randperm() 函式中定義取樣區間的最大整數,取樣區間的最小整數預設為 1。

例如,讓我們使用 randperm() 函式生成 1 到 6 之間的六個整數。請參閱下面的程式碼。

clc
v = randperm(6)

輸出:

v =

     3     5     6     1     4     2

如果我們重新執行此程式碼,輸出將會改變,因為這些值是隨機的。我們可以使用 randperm() 函式的第二個引數來定義隨機排列整數的數量。

我們只能定義一個小於或等於第一個引數的數字,因為生成的數字是唯一的,不能重複。如果我們定義的數字大於第一個引數,MATLAB 將顯示錯誤。

例如,讓我們使用 randperm() 函式生成 1 到 6 之間的兩個隨機排列數。請參閱下面的程式碼。

clc
v = randperm(6,2)

輸出:

v =

     1     3

如果我們重新執行程式碼,輸出中只有兩個數字會改變,因為生成的數字是隨機的。我們還可以使用 rng 函式儲存隨機數生成器的狀態。

先前儲存的狀態可用於生成相同的整數序列。例如,讓我們使用 randperm()rng 函式生成兩個具有相同序列的向量。

請參閱下面的程式碼。

clc
s = rng;
v1 = randperm(6,2)
rng(s)
v2 = randperm(6,2)

輸出:

v1 =

     1     2


v2 =

     1     2

在輸出中,向量 v1 和 v2 都包含相同的元素。

如果我們重新執行程式碼,輸出將改變,但兩個向量的元素將保持不變。如果我們不使用先前儲存的狀態,向量將具有不同的元素。