最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

乱数配列の作成

MATLAB® はアルゴリズムを使用して "疑似乱数""疑似独立" の数値を生成します。これらの数値は、数学的な意味では厳密にランダムで独立してはいませんが、ランダム性と独立性に関する各種の統計検定に合格しており、その計算は検定や診断の目的で繰り返すことができます。

関数 randrandirandn、および randperm は乱数の配列を作成するための基本関数です。関数 rng では、乱数を発生させるシードとアルゴリズムを制御することができます。

乱数関数

基本的な乱数関数には、randrandirandnrandperm の 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
dsfmt19937SIMD 指向高速メルセンヌ・ツイスター なし219937-1
mcg16807乗算合同法発生器なし231-2
mlfg6331_64乗法ラグ フィボナッチ発生器あり2124 (長さが 272 の 251 個のストリーム)
mrg32k3a結合多重再帰発生器あり2191 (長さが 2127 の 263 個のストリーム)
philox4x32_10Philox 4x32 発生器、10 ラウンドあり2193 (長さが 2129 の 264 個のストリーム)
threefry4x64_20Threefry 4x64 発生器、20 ラウンドあり2514 (長さが 2258 の 2256 個のストリーム)
shr3cong線形合同法発生器を組み合わせたシフトレジスタ発生器なし264
swb2712修正桁下げ付き減算発生器なし21492

関数 rng を使用して、関数 randrandirandn、および randperm で使用されるシードと発生器を設定します。たとえば、rng('shuffle','philox') は現在の時刻に基づいて Philox 4x32 発生器にシードを指定し、呼び出されるたびに異なる数列を生成します。

詳細については、乱数発生器の制御を参照してください。

参考

| | | |

関連するトピック