主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

rng

乱数発生器の制御

説明

rng (种子は,MATLAB®乱数発生器のシードを指定します。たとえば,rng (1)は,シード1を使用してメルセンヌ・ツイスター発生器を初期化します。

関数rngは,関数兰德兰迪randnおよびrandpermが乱数列を生成する方法を決定する“グローバルストリーム”を制御します。グローバルストリームから1つ以上の独立したストリームを作成するには,RandStreamおよびRandStream.createを参照してください。

rng (种子发电机は,使用する乱数発生器の種類も指定します。たとえば,rng (0, ' philox ')はPhilox 4 x32乱数発生器をシード0で初期化します。

s = rngは,現在の乱数発生器の設定を構造体年代に返します。

すべて折りたたむ

乱数発生器を既定のシード(0)とアルゴリズム(メルセンヌ・ツイスター)に設定し,発生器の設定を保存します。

rng (“默认”s = RNG
s =结构体字段:类型:'twister'种子:0状态:[625x1 uint32]

0から1までの乱数の1行5列の行ベクトルを作成します。

x =兰德(1、5)
x =1×50.8147 0.9058 0.1270 0.9134 0.6324

発生器のシードとアルゴリズムを変更し,新しい乱数行ベクトルを作成します。

rng (1,“philox”) xnew = rand(1,5)
xnew =1×50.5361 0.2319 0.7753 0.2390 0.0036

次に,発生器を元の設定に戻し,乱数ベクトルを作成します。結果は,既定の発生器を使用して作成された元の行ベクトルxと一致します。

Rng (s) xold = rand(1,5)
xold =1×50.8147 0.9058 0.1270 0.9134 0.6324

入力引数

すべて折りたたむ

発生器の初期化。次のいずれかのオプションとして指定します。

説明
0 シード0で発生器を初期化します。
正の整数 発生器を指定された正の整数のシード(1など)で初期化します。
“默认” メルセンヌ・ツイスター発生器をシード0で初期化します。これは,各 MATLAB セッションの開始時の既定の設定です。
“洗牌” 発生器を現在の時刻に基づいて初期化します。rngの各呼び出し後の乱数列が異なるようになります。
構造体 フィールド类型种子および状态の構造体に含まれる設定に基づいて発生器を初期化します。

乱数のアルゴリズム。次の表のいずれかのオプションとして指定します。発生器のアルゴリズムの詳細については,乱数ストリームの作成と管理を参照してください。

発生器の名前 発生器のキーワード
“旋风” メルセンヌ・ツイスター mt19937ar
“simdTwister” SIMD指向高速メルセンヌ・ツイスター dsfmt19937
“combRecursive” 複数の再帰発生器の組み合わせ mrg32k3a
“multFibonacci” 乗法ラグフィボナッチ mlfg6331_64
“philox” Philox 4 x32発生器,10ラウンド philox4x32_10
“threefry” Threefry 4 x64発生器,20ラウンド threefry4x64_20

MATLAB 4.0版本5.0とで使用されていた従来の発生器の場合は,次のいずれかのオプションを使用します。

発生器の名前 発生器のキーワード
v4的 レガシMATLAB 4.0版本発生器 mcg16807
“v5uniform” レガシMATLAB 5.0版本一様分布発生器 swb2712
“v5normal” レガシMATLAB 5.0版本正規分布発生器 shr3cong

ヒント

  • rng(“洗牌”)は,現在の時刻に基づいて乱数発生器のシードを指定するため,これを使用して,並列処理時に独立したストリームを確保するために異なるワーカーに乱数ストリームを設定しないでください。これは,parforジョブの内部など,コマンドが複数のワーカーに同時に送信されている場合に特にあてはまります。ワーカーでストリームが独立するようにするには,既定の動作を使用するか,RandStreamを使用して,各ワーカーで独自のサブストリームを使用することを検討してください。

  • “种子”“状态”または“旋风”入力をもつ関数兰德randnではなくrngを使用するには,兰德とrandnの非推奨構文の置換を参照してください。

拡張機能

R2011aで導入