最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
MATLAB® はアルゴリズムを使用して "疑似乱数" で "疑似独立" の数値を生成します。これらの数値は、数学的な意味では厳密にランダムで独立してはいませんが、ランダム性と独立性に関する各種の統計検定に合格しており、その計算は検定や診断の目的で繰り返すことができます。
関数 rand
、randi
、randn
、および randperm
は乱数の配列を作成するための基本関数です。関数 rng
では、乱数を発生させるシードとアルゴリズムを制御することができます。
基本的な乱数関数には、rand
、randi
、randn
、randperm
の 4 つがあります。関数 rand
は、一様分布から得た 0 ~ 1 の実数を返します。以下に例を示します。
r1 = rand(1000,1);
r1
は一様分布から得た実浮動小数点数からなる 1000 行 1 列の列ベクトルです。r1
の値はすべて、開区間 (0, 1) の範囲内にあります。これらの値のヒストグラムはほぼ平坦であり、数値がかなり一様にサンプリングされていることを示します。関数 randi
は離散一様分布から得た double
の整数値を返します。以下に例を示します。
r2 = randi(10,1000,1);
r2
は、範囲が 1、2、...、10 の離散一様分布から得た整数値からなる 1000 行 1 列の列ベクトルです。これらの値のヒストグラムはほぼ平坦であり、1 ~ 10 の整数がかなり一様にサンプリングされていることを示します。 関数 randn
は、標準正規分布から得た実浮動小数点数の配列を返します。以下に例を示します。
r3 = randn(1000,1);
r3
は標準正規分布から得た数値からなる 1000 行 1 列の列ベクトルです。r3
のヒストグラムは平均値 0、標準偏差 1 の正規分布とほぼ同様になります。関数 randperm
を使用すると、繰り返しの値を含まない乱数の整数値からなる配列を作成できます。以下に例を示します。
r4 = randperm(15,5);
r4
は、閉区間 [1, 15] からランダムに選択された整数値からなる 1 行 5 列の配列です。繰り返しの値を含む配列を返す可能性がある randi
とは異なり、randperm
が返す配列に繰り返しの値はありません。これらの関数はいずれも、連続で呼び出すと異なる結果を返します。乱数からなる異なる配列をいくつか作成する場合に、この動作は便利です。
MATLAB は、発生器アルゴリズムのオプションをいくつか提供します。次の表は、これらをまとめたものです。
キーワード | 発生器 | 複数のストリームとサブストリームのサポート | 高精度な場合の近似周期 |
---|---|---|---|
mt19937ar | メルセンヌ・ツイスター (MATLAB スタートアップ時に既定のストリームによって使用) | なし | 219937-1 |
dsfmt19937 | SIMD 指向高速メルセンヌ・ツイスター | なし | 219937-1 |
mcg16807 | 乗算合同法発生器 | なし | 231-2 |
mlfg6331_64 | 乗法ラグ フィボナッチ発生器 | あり | 2124 (長さが 272 の 251 個のストリーム) |
mrg32k3a | 結合多重再帰発生器 | あり | 2191 (長さが 2127 の 263 個のストリーム) |
philox4x32_10 | Philox 4x32 発生器、10 ラウンド | あり | 2193 (長さが 2129 の 264 個のストリーム) |
threefry4x64_20 | Threefry 4x64 発生器、20 ラウンド | あり | 2514 (長さが 2258 の 2256 個のストリーム) |
shr3cong | 線形合同法発生器を組み合わせたシフトレジスタ発生器 | なし | 264 |
swb2712 | 修正桁下げ付き減算発生器 | なし | 21492 |
関数 rng
を使用して、関数 rand
、randi
、randn
、および randperm
で使用されるシードと発生器を設定します。たとえば、rng('shuffle','philox')
は現在の時刻に基づいて Philox 4x32 発生器にシードを指定し、呼び出されるたびに異なる数列を生成します。
詳細については、乱数発生器の制御を参照してください。
rand
| randi
| randn
| randperm
| rng