ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

異なる乱数の生成

この例では、MATLAB® を再起動した際に同じ乱数の配列が繰り返されないようにする方法を示します。この手法は、異なる MATLAB セッションで実行した同じ乱数コマンドの結果を組み合わせる場合に便利です。

乱数関数 randrandnrandirandperm はすべて、共有の乱数発生器から値を取得します。MATLAB を起動するたびに、乱数発生器は同じ状態にリセットされます。このため、rand(2,2) のようなコマンドを起動直後に実行すると、いつでも同じ結果が返されます。また、乱数関数を呼び出すスクリプトや関数はいずれも、再起動後には同じ結果を返します。

異なる乱数を取得する 1 つの方法は、毎回異なるシードを使用して発生器を初期化することです。これにより、前のセッションと同じ結果の繰り返しは確実に避けられます。

乱数関数のいずれかを呼び出す前に、MATLAB セッションで rng('shuffle') コマンドを 1 回実行します。

rng('shuffle')

このコマンドは MATLAB のコマンド ウィンドウで実行することができ、また、スタートアップ ファイルに追加することもできます。これは、再起動するたびに MATLAB で実行される特殊スクリプトです。

ここで、乱数コマンドを実行します。

A = rand(2,2);

rng('shuffle') は呼び出されるたびに、現在の時刻に基づく異なるシードを使用して乱数発生器を再シードします。

あるいは、異なるシードを明示的に指定します。以下に例を示します。

rng(1);
A = rand(2,2);
rng(2);
B = rand(2,2);

配列 AB は異なります。これは、関数 rand を呼び出すたびに、あらかじめ異なるシードを用いて発生器を初期化しているからです。

    メモ:   発生器を頻繁に再シードしても、出力の統計的特性が改善されることや、実際に出力がよりランダムになることはありません。再シードは、MATLAB を再起動するときや、乱数を使用する大規模計算を実行する前に使用すると便利なことがあります。ただし、セッション内で発生器を頻繁に再シードすることは、乱数の統計的特性に悪影響を及ぼすことがあるので推奨しません。

参考

関連する例

詳細

この情報は役に立ちましたか?