MATLAB を使用したランダム順列

Ammar Ali 2022年1月20日
MATLAB を使用したランダム順列

このチュートリアルでは、MATLAB の randperm() 関数を使用して、整数のランダム順列を含むベクトルを生成する方法について説明します。

MATLAB の randperm() 関数を使用して、整数のランダム順列を含むベクトルを生成する

MATLAB の組み込み関数 randperm() を使用して、整数のランダム順列を含むベクトルを生成できます。randperm() 関数でサンプリング間隔の最大の整数を定義できます。デフォルトでは、サンプリング間隔の最小の整数は 1 です。

たとえば、randperm() 関数を使用して、1 から 6 の範囲の 6つの整数を生成してみましょう。以下のコードを参照してください。

clc
v = randperm(6)

出力:

v =

     3     5     6     1     4     2

これらの値はランダムであるため、このコードを再実行すると出力が変わります。randperm() 関数の 2 番目の引数を使用して、ランダム順列整数の数を定義できます。

生成された数値は一意であり、繰り返すことができないため、最初の引数以下の数値しか定義できません。最初の引数より大きい数値を定義すると、MATLAB はエラーを表示します。

たとえば、randperm() 関数を使用して、1 から 6 までの 2つのランダム順列番号を生成してみましょう。以下のコードを参照してください。

clc
v = randperm(6,2)

出力:

v =

     1     3

生成された数値はランダムであるため、コードを再実行すると、出力の 2つの数値のみが変更されます。rng 関数を使用して、乱数ジェネレーターの状態を保存することもできます。

以前に保存された状態を使用して、同じ整数のシーケンスを生成できます。たとえば、randperm() 関数と rng 関数を使用して、同じシーケンスで 2つのベクトルを生成してみましょう。

以下のコードを参照してください。

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

出力:

v1 =

     1     2


v2 =

     1     2

出力では、ベクトル v1 と v2 の両方に同じ要素が含まれています。

コードを再実行すると、出力は変更されますが、両方のベクトルの要素は変更されません。以前に保存された状態を使用しない場合、ベクトルは異なる要素を持ちます。

著者: 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