Main Content

tallrng

tall 配列での乱数発生の制御

説明

tallrng("default") は、tall 配列計算で使用される乱数発生器の設定を既定値に戻します。発生する乱数は、MATLAB® を再起動した場合と同様になります。

tallrng("shuffle") は、現在時間に基づいて乱数発生器のシードを指定します。乱数が生成されるたびに異なる乱数列が必要な場合に、この構文を使用します。

tallrng(seed) は、乱数発生器の開始点 (シード) を指定します。予測可能な数列を生成する場合に、この構文を使用します。

tallrng(seed,generator) または tallrng("shuffle",generator) は、使用する乱数発生器のアルゴリズムも指定します。たとえば、tallrng(0,"mlfg6331_64") のようになります。

tallrng(generator) は、シード 0 を指定し、使用する乱数発生器のアルゴリズムを指定します。この構文は tallrng(0,generator) と等価です。 (R2023b 以降)

state = tallrng は、乱数発生器の現在の状態を構造体として返します。この構造体を使用して、後で tallrng(state) によって乱数発生器をキャプチャした状態に復元します。

tallrng(state) は、state = tallrng で以前にキャプチャした設定を使用して、乱数発生器の状態を復元します。

メモ

MATLAB の基本設定ウィンドウにおける乱数発生器の既定のアルゴリズムとシードは rng("default") にのみ影響し、tallrng("default) の呼び出しには影響しません。

すべて折りたたむ

発生器の設定をキャプチャし、乱数の配列を生成してから、予測可能な乱数の配列を作成するために、発生器を初期設定に戻します。

乱数発生器の現在の状態を保存します。

state = tallrng
state = struct with fields:
           Type: 'threefry'
           Seed: 0
    StreamIndex: 1
      Substream: 1

arrayfun を使用して、乱数の tall 配列を作成します。

t = tall(zeros(10,1));
n1 = arrayfun(@(x) x+randn, t);
n1 = gather(n1)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.85 sec
- Pass 2 of 2: Completed in 0.34 sec
Evaluation completed in 1.7 sec
n1 = 10×1

   -0.3479
    0.1057
    0.3969
    0.6544
   -1.8228
   -1.1037
    0.4521
    1.4768
    0.0832
   -1.2005

発生器を以前の状態に戻し、乱数の配列を再生成します。2 つの配列 n1n2 は等しくなります。

tallrng(state)
n2 = arrayfun(@(x) x+randn, t);
n2 = gather(n2)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.2 sec
- Pass 2 of 2: Completed in 0.096 sec
Evaluation completed in 0.52 sec
n2 = 10×1

   -0.3479
    0.1057
    0.3969
    0.6544
   -1.8228
   -1.1037
    0.4521
    1.4768
    0.0832
   -1.2005

入力引数

すべて折りたたむ

乱数シード。非負の整数として指定します。シードは、アルゴリズムが乱数を生成する開始点を指定します。再現可能な結果が必要な場合に、シードを指定します。

シードの最大値は 232-1 です。

例: tallrng(3)

乱数のアルゴリズム。次の表のいずれかのオプションとして指定します。正式な名前または便宜上の名前を指定できます。

名前便宜上の名前説明
"threefry4x64_20" (既定)"threefry"Threefry 4x64 発生器、20 ラウンド
"mrg32k3a" "combRecursive"

結合多重再帰発生器

"mlfg6331_64""multFibonacci"

乗法ラグ フィボナッチ発生器

"philox4x32_10""philox"Philox 4x32 発生器、10 ラウンド

tallrng は、複数のストリームやサブストリームをサポートする乱数発生器に対応します。MATLAB で使用可能な発生器の完全な一覧については、乱数ストリームの作成と管理を参照してください。

例: tallrng(0,"mlfg6331_64")

乱数発生器の以前の状態。state = tallrng を使用して以前に作成した構造体として指定します。

例: state = tallrng は乱数発生器の現在の状態をキャプチャし、tallrng(state) は発生器をこれらの設定に戻します。

データ型: struct

出力引数

すべて折りたたむ

乱数発生器の状態。次のフィールドをもつ構造体として返されます。

フィールド説明値の例
Type乱数発生器のタイプ'threefry'
Seedアルゴリズム (再現性用) の開始点を示す数値0
StreamIndex関連するグローバル ストリームを示すインデックス 1
Substream関連するサブストリームを示すインデックス1

例: state = tallrng は乱数発生器の現在の状態をキャプチャし、tallrng(state) は発生器をこれらの設定に戻します。

データ型: struct

ヒント

  • Statistics and Machine Learning Toolbox™ がある場合は、tallrng は、関数 datasample、関数 cvpartition、および TreeBagger が tall 配列の計算時に生成する乱数を制御します。

バージョン履歴

R2017b で導入

すべて展開する

参考

|