MATLAB 建立隨機矩陣

Ammar Ali 2023年1月30日
  1. 在 MATLAB 中使用 rand() 函式生成隨機數
  2. 在 MATLAB 中使用 randi() 函式生成隨機數
  3. 在 MATLAB 中使用 randn() 函式生成隨機數
  4. 在 MATLAB 中使用 randperm() 函式生成隨機數
  5. 在 MATLAB 中使用 betarnd() 函式生成隨機數
  6. 在 MATLAB 中使用 random() 函式生成隨機數
MATLAB 建立隨機矩陣

本教程將討論如何使用 rand()randi()randn()randperm()betarand()random() 函式生成或建立隨機數在 MATLAB 中。

在 MATLAB 中使用 rand() 函式生成隨機數

如果要生成均勻分佈的隨機數,可以使用 MATLAB 中的 rand() 函式,該函式生成 0 到 1 之間的隨機數。還可以指定包含隨機值的矩陣的大小,每個值都會在 0 和 1 之間,你可以通過將它們與縮放器相乘來根據你的要求進行縮放。例如,讓我們使用 rand() 函式生成一個 2×2 隨機值矩陣。請參考下面的程式碼。

rn = rand(2)

輸出:

rn =

    0.2259    0.2277
    0.1707    0.4357

正如你在輸出中看到的那樣,生成了一個包含 0 到 1 之間隨機值的 2×2 矩陣。如果要指定隨機數的範圍,則必須使用以下公式。

rn = a + (b-a).*rand(n,1)

在這個公式中,a 是下限,b 是上限,而 n 是隨機數的長度。例如,讓我們生成 2 到 8 範圍內的十個隨機數。請參考下面的程式碼。

a = 2;
b = 8;
n = 10;
rn = a + (b-a).*rand(n,1)

輸出:

rn =

    7.5403
    4.5812
    3.1089
    7.4293
    7.8785
    4.6332
    2.6667
    3.5484
    4.4523
    5.5694

有 2 到 8 範圍內的十個隨機數。如果你只想要輸出中的整數,你可以使用 round() 函式將這些隨機數轉換為整數,該函式將浮點數四捨五入到最接近的整數。你還可以使用 size() 函式的大小和資料型別的 like 屬性從現有陣列中克隆隨機數的大小和資料型別。例如,讓我們建立一個陣列並根據該陣列的大小和資料型別生成隨機值。請參考下面的程式碼。

v = [2 3 1 5]
rn = rand(size(v),'like',v)

輸出:

v =

     2     3     1     5


rn =

    0.4886    0.5785    0.2373    0.4588

陣列和隨機數的大小和資料型別相同。檢視此連結以獲取有關 rand() 函式的更多詳細資訊。

在 MATLAB 中使用 randi() 函式生成隨機數

上述函式生成浮點隨機數,但如果要生成隨機整數,可以使用 MATLAB 中的 randi() 函式,該函式生成從 1 到指定整數的隨機整數,你可以將其指定為 randi() 函式中的第一個引數。你還可以指定包含隨機值的輸出矩陣的大小作為第二個和第三個引數。例如,讓我們生成一個 3×3 矩陣,其中包含從 1 到 15 的隨機整數。請參考下面的程式碼。

rn = randi(15,3,3)

輸出:

rn =

     6     1     8
    11    12    14
     3     8    10

該矩陣的大小為 3×3,其中包含 1 到 15 之間的隨機整數。你還可以生成特定範圍之間的隨機整數,你只需將範圍作為第一個引數傳遞在方括號中 randi() 函式。例如,讓我們生成 -10 到 10 之間的 10 個隨機數。請參考下面的程式碼。

rn = randi([-10,10],10,1)

輸出:

rn =

     2
     8
     6
     2
    -7
    -5
     8
   -10
     0
    -7

在 -10 到 10 的範圍內有十個隨機數。你還可以通過在 randi() 函式中傳遞資料型別名稱來定義整數的資料型別。你可以選擇的資料型別有:'single', 'double', 'int8', 'uint8', 'int16', 'uint16', 'int32' , 或 'uint32'。你可以使用 size() 函式根據現有陣列的大小定義隨機數的大小,使用 like 屬性定義數字資料型別。例如,讓我們根據現有陣列的大小和數值資料型別生成一個隨機值矩陣。請參考下面的程式碼。

v = [1 2; 6 7]
rn = randi(7,size(v),'like',v)

輸出:

v =

     1     2
     6     7


rn =

     6     1
     7     7

陣列和隨機數的大小和資料型別相同。檢視此連結以獲取有關 randi() 函式的更多詳細資訊。

在 MATLAB 中使用 randn() 函式生成隨機數

如果要生成正態分佈的隨機數,可以使用 MATLAB 中的 randn() 函式。randn() 函式與 rand() 函式相同,只是分佈型別不同。rand() 函式生成均勻分佈的隨機數,而 randn() 函式生成正態分佈的隨機數。你可以根據需要使用這些功能中的任何一個。檢視此連結以獲取有關 randn 函式的更多詳細資訊。

在 MATLAB 中使用 randperm() 函式生成隨機數

如果要生成整數的隨機排列,可以使用 MATLAB 中的 randperm() 函式。整數的隨機排列將介於 1 到特定數字之間,你可以在 randperm() 函式中將其定義為第一個引數。你還可以將要生成的整數數量定義為函式中的第二個引數。例如,讓我們生成 6 個唯一整數的隨機排列。請參考下面的程式碼。

rn = randperm(10,5)

輸出:

rn =

     2     3    10     8     7

所有整數都是唯一的,範圍從 1 到 10。請注意,randperm() 函式與 randperm() 函式相同,不同之處在於 randperm() 生成唯一整數,而在 randi() 函式,整數可以重複。檢視此連結以瞭解有關 randperm 功能的更多詳細資訊。

在 MATLAB 中使用 betarnd() 函式生成隨機數

如果要從 beta 分佈生成隨機數,可以使用 MATLAB 中的 betarnd() 函式。此函式生成由第一個和第二個引數指定的隨機整數:向量、矩陣或相同大小的陣列。例如,讓我們使用兩個向量作為輸入,根據 beta 分佈生成一個 1×5 隨機數矩陣。請參考下面的程式碼。

a = [1 2 3 4 5];
b = [9 8 7 6 5];
rn = betarnd(a,b)

輸出:

rn =

    0.1234    0.1847    0.3334    0.2689    0.3678

你還可以通過在 betarnd() 函式的第三個和第四個引數中定義它來指定輸出矩陣的大小。檢視此連結以獲取有關 betarnd() 函式的更多詳細資訊。

在 MATLAB 中使用 random() 函式生成隨機數

如果要從指定的分佈型別生成隨機數,可以使用 MATLAB 中的 random() 函式。你必須將分佈的名稱定義為第一個引數,然後需要傳遞分佈引數。例如,讓我們使用 random() 函式使用 0 的 sigma 值和 1 的 mu 值生成正態分佈的隨機數。請參考下面的程式碼。

s = 0;
m = 1;
rn = random('Normal',s,m)

輸出:

rn =

   -0.1649

你可以在函式中定義所需的分發名稱。你可以使用多種型別的分佈,例如:BetaBinomialExponentialGamma 等等。檢視此 link 以瞭解有關 random 函式的更多詳細資訊。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB Random

相關文章 - MATLAB Matrix