Main Content

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

rng

説明

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

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

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

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

すべて折りたたむ

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

rng('default')
s = rng
s = struct with fields:
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

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

x = rand(1,5)
x = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

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

rng(1,'philox')
xnew = rand(1,5)
xnew = 1×5

    0.5361    0.2319    0.7753    0.2390    0.0036

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

rng(s)
xold = rand(1,5)
xold = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

入力引数

すべて折りたたむ

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

説明
0シード 0 を使用して発生器を初期化します。
正の整数発生器を指定された正の整数のシード (1 など) で初期化します。
'default'

シード値 0 を使用してメルセンヌ・ツイスター発生器を初期化します。各 MATLAB セッションはこの既定の設定で開始します。

並列ワーカー (Parallel Computing Toolbox™ が必要) を使用している場合、'default' は、20 ラウンド、シード値 0 で Threefry 4x64 発生器を初期化します。 (R2023a 以降)

'shuffle'発生器を現在の時刻に基づいて初期化します。rng の各呼び出し後の乱数列が異なるようになります。
構造体構造体に含まれる TypeSeed および State の各フィールドの設定に基づいて発生器を初期化します。

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

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

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

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

ヒント

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

  • 並列処理を実行する場合、MATLAB クライアントと MATLAB ワーカーで既定の乱数発生器が異なります。クライアントとワーカーで同じ乱数ストリームを生成する必要がある場合は、発生器タイプとシードを同じにして rng を使用できます (あるいは、発生器タイプ、シード、および正規変換アルゴリズムを同じにして RandStream を使用することを検討してください)。詳細については、ワーカー上の乱数ストリームの制御 (Parallel Computing Toolbox)を参照してください。

  • 'seed''state' または 'twister' 入力をもつ関数 randrandn ではなく rng を使用するには、rand と randn の非推奨構文の置換を参照してください。

拡張機能

バージョン履歴

R2011a で導入

すべて展開する