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 の範囲の 10 個の乱数を生成してみましょう。以下のコードを参照してください。

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 の範囲の 10 個の乱数があります。出力に整数のみが必要な場合は、浮動小数点数を最も近い整数に丸める 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() 関数の最初の引数。2 番目と 3 番目の引数として、ランダムな値を含む出力行列のサイズを指定することもできます。たとえば、1 から 15 までの乱数を含む 3 行 3 列の行列を生成してみましょう。以下のコードを参照してください。

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 の範囲の 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() 関数で最初の引数として定義できます。関数の 2 番目の引数として、生成する整数の数を定義することもできます。たとえば、6つの一意の整数のランダム順列を生成してみましょう。以下のコードを参照してください。

rn = randperm(10,5)

出力:

rn =

     2     3    10     8     7

すべての整数は一意であり、範囲は 1〜10 です。randperm() 関数は randi() 関数と同じですが、randperm() が一意の整数を生成する点が異なりますが、randi() 関数では、整数を繰り返すことができます。randperm 機能の詳細については、このリンクを確認してください。

MATLAB で betarnd() 関数を使用して乱数を生成する

ベータ分布から乱数を生成する場合は、MATLAB の betarnd() 関数を使用できます。この関数は、最初と 2 番目の引数で指定されたランダムな整数(同じサイズのベクトル、行列、または配列)を生成します。たとえば、2つのベクトルを入力として使用して、ベータ分布から乱数の 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() 関数の 3 番目と 4 番目の引数で定義することにより、出力行列のサイズを指定することもできます。betarnd() 関数の詳細については、このリンクを確認してください。

MATLAB で random() 関数を使用して乱数を生成する

指定された分布タイプから乱数を生成する場合は、MATLAB の random() 関数を使用できます。ディストリビューションの名前を最初の引数として定義する必要があり、その後、ディストリビューションパラメーターを渡す必要があります。たとえば、random() 関数を使用して、シグマ値 0 とミュー値 1 を使用して正規分布の乱数を生成してみましょう。以下のコードを参照してください。

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

出力:

rn =

   -0.1649

関数で必要な配布名を定義できます。BetaBinomialExponentialGamma など、さまざまな種類の分布を使用できます。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