主要内容

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

RandStream

説明

RandStreamは,指定した疑似乱数発生器アルゴリズムを使用して乱数ストリ,ムを作成します。

MATLAB®の疑似乱数は,1以上の乱数ストリ。乱数の配列を生成する最も簡単な方法は,関数兰德兰迪randnrandpermを使用することです。これらのすべての関数は,“グロ,バルストリ,ム”として知られている,一様分布の乱数の同じストリ,ムに依存します。グロ,バルストリ,ムを変更するのにRandStreamを使用できますが,その使用は必須ではありません。RandStreamを使用してストリ,ムを作成する場合,RandStream.setGlobalStreamを使用して,それをグロ,バルストリ,ムにすることができます。しかし,関数rngの方が,よりシンプルなインターフェイスで,ほとんどのユースケースに対して十分なグローバルストリームを作成できます。

また,RandStreamを使用してストリ,ムを作成した後,兰德兰迪randn,またはrandpermを使用して,それらのストリ,ムから乱数を生成することもできます。生成される乱数は,グローバルストリームまたはその他のストリームから取得される乱数とは別のものになります。詳細にいては,オブジェクト関数を参照してください。

作成

次の構文は,単一の乱数ストリ,ムを作成するために使用します。複数の独立したストリ,ムを同時に作成する場合は,関数RandStream.createを使用します。

説明

年代= RandStream (gentypeは,gentypeで指定された一様疑似乱数発生器アルゴリズムを使用する乱数ストリ,ムを作成します。

年代= RandStream (gentype名称,值は,1以上のオプションの名称,值のペアの引数を使用して,ストリ,ムのプロパティも制御します。

入力引数

すべて展開する

乱数発生器アルゴリズム。乱数発生器の名前を示す文字ベクトルまたは string スカラーとして指定します。MATLAB はいくつかの発生器アルゴリズムを提供します。以下の表に、使用可能な発生器アルゴリズムの名前と主要なプロパティの概要を示します。一部の発生器アルゴリズムは、複数のストリームおよびサブストリームによる相互に独立した一連の乱数の作成をサポートしています。詳細については、乱数ストリ,ムの作成と管理を参照してください。

名前 発生器 複数のストリ,ムとサブストリ,ムのサポ,ト 高精度な場合の近似周期
“mt19937ar” メルセンヌ·(matlab) なし 219937-1
“dsfmt19937” Simd指向高速メルセンヌ·スタ なし 219937-1
“mlfg6331_64” 乗法ラグフィボナッチ発生器 あり 2124(長さが72の251個のストリム)
“mrg32k3a” 結合多重再帰発生器 あり 2191(長さが127の263個のストリム)
“philox4x32_10” Philox 4x32発生器,10ラウンド あり 2193(長さが129の264個のストリム)
“threefry4x64_20” 三炒4x64発生器,20ラウンド あり 2514(長さが258の2256個のストリム)
“shr3cong” 線形合同法発生器を組み合わせたシフトレジスタ発生器 なし 264
“swb2712” 修正桁下げ付き減算発生器 なし 21492
“mcg16807” 乗算合同法発生器 なし 231-2
名前と値の引数

オプションの名称,值の引数ペアをコンマ区切りで指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を任意の順序で指定できます。

例:s = RandStream('mt19937ar','Seed',15,'NormalTransform','Polar')

乱数シ,ド。“种子”と非負の整数または“洗牌”で構成されるコンマ区切りのペアとして指定します。シ,ドは,アルゴリズムが乱数を生成する開始点を指定します。“洗牌”は,現在の時刻に基づいてシ,ドを作成します。整数を指定する場合,0 ~ 232−1の値でなければなりません。

MATLABの起動時またはシミュレーションの実行前にストリームを作成する場合,発生器のシードを初期化手順として指定します。ストリ,ムを再現するには,毎回同じシ,ドを使用します。複数のシードを使用すると,複数の乱数列が作成されますが,異なる乱数列が統計的に独立する保証はありません。それが重要な状況においては,Substreamプロパティを指定するか,RandStream.createを使用して統計的に独立したストリ,ムを作成してください。

randnを使用して乱数ストリ,ムから正規分布した乱数を生成する変換アルゴリズム。“NormalTransform”およびアルゴリズム名“神”“极地”,または“反转”のいずれかで構成されるコンマ区切りのペアとして指定します。詳細にいては,乱数ストリ,ムの作成と管理を参照してください。

プロパティ

すべて展開する

乱数ストリ,ム年代は,その動作を制御するプロパティをもっています。p = s。を使用してプロパティにアクセスし,s.Property = pを使用してプロパティを変更します。ストリ,ム年代のすべてのプロパティを保存するにはA = get(s),復元するには集(,)を使用できます。RandStreamのプロパティを次のリストに示します。

このプロパティは読み取り専用です。

ストリ,ムが使用する乱数発生器アルゴリズム。発生器とそのプロパティの概要にいては,発生器アルゴリズムの表を参照してください。

すべての発生器のアルゴリズムが複数のストリ,ムをサポ,トするとは限りません。統計的に独立した複数のストリ,ムとサブストリ,ムを作成できる発生器もあります。

デ,タ型:字符

このプロパティは読み取り専用です。

ストリ,ムの作成に使用される乱数シ,ド。非負の整数として返されます。

デ,タ型:uint32

このプロパティは読み取り専用です。

現在のストリ,ムを作成したグル,プにあるストリ,ム数。正の整数として返されます。

デ,タ型:uint64

このプロパティは読み取り専用です。

現在のストリムと共に作成したストリムのグルプにおける現在のストリムのンデックス。正の整数として返されます。

デ,タ型:uint64

発生器の現在の内部状態。整数のベクトルとして指定します。状態ベクトルのサイズは、発生器アルゴリズムによって決まります。このプロパティを設定する場合、s.Stateに割り当てる値は,あらかじめs.Stateから読み取った値でなければなりません。状态プロパティからあらかじめ読み取らずにストリ,ムを初期の状態に戻すには,重置を使用します。状态プロパティを使用して発生器の内部状態を保存し復元することで,乱数列を再現できます。

内部状態により,乱数ストリ,ム年代によって生成される乱数列が決まります。1つのストリームから乱数を生成するたびに、ストリーム内の発生器の状態が変化し、統計的に独立同一分布する連続値が生成されます。

メモ

乱数ストリームの状態の復元,またはストリームのリセットは,ストリームの結果を再現する場合にのみ行ってください。

デ,タ型:uint32

現在設定しているストリムのサブストリムのンデックス。

発生器の種類によっては,1。異なるサブストリ,ムから生成される値は,相互に独立しています。サブストリムをサポトしている発生器にいては,発生器アルゴリズムの表を参照してください。

デ,タ型:

randnを使用して正規分布の疑似乱数値を生成する変換アルゴリズム。

デ,タ型:字符

年代が対称な疑似乱数値を生成するかどうか。逻辑真正的1)または0)として指定します。対称値は,生成される一様分布の既定の疑似乱数値を 1 から減算した値です。

デ,タ型:逻辑

年代が完全精度を使用して値を生成するかどうか。逻辑真正的1)または0)として指定します。FullPrecisionの場合,発生器によっては,少ないビット数で疑似乱数を高速に生成することができます。

デ,タ型:逻辑

オブジェクト関数

既定では,兰德などの乱数発生関数はグロ,バル乱数ストリ,ムを使用します。異なるストリ,ムを指定するには,RandStreamオブジェクトを作成し,それを最初の入力引数として渡します。たとえば,SIMD指向高速メルセンヌ・ツイスターを使用して,乱数の4行1列のベクトルを作成します。

s = RandStream('dsfmt19937');R = rand(s,4,1);

これらの関数は,RandStreamオブジェクトを受け入れます。

兰德 一様分布の乱数

サポ,トされる構文は次のとおりです。ここで,年代RandStreamオブジェクトです。

X = rand(s,n) X = rand(s,sz1,…,sbn) X = rand(s,sz) X = rand(s,sz) X = rand(s,typename)
他の入力引数の詳細にいては,兰德兰迪,およびrandnを参照してください。

兰迪 整数の一様分布の疑似乱数
randn 正規分布した乱数
randperm 整数のランダム置換

サポ,トされる構文は次のとおりです。ここで,年代RandStreamオブジェクトです。

P = randperm(s,n,k)
他の入力引数の詳細にいては,randpermを参照してください。

RandStreamのその他のオブジェクト関数には,以下があります。

RandStream.create 統計的に独立した乱数ストリ,ムを作成
RandStream.list 乱数発生器アルゴリズムをリスト
RandStream.getGlobalStream 現在のグロ,バル乱数ストリ,ムを取得
RandStream.setGlobalStream グロ,バル乱数ストリ,ムの設定
重置 乱数ストリ,ムのリセット

すべて折りたたむ

Simd指向高速メルセンヌ·。

s = RandStream(“dsfmt19937”
s = dsfmt19937随机流种子:0 NormalTransform: Ziggurat

ストリムを使用して,乱数を5生成します。

兰特(s, 1、5)
ans =1×50.0306 0.2131 0.2990 0.3811 0.8635

現在の時間に基づく発生器のシ,ドを使用して,乱数ストリ,ムを作成します。この操作は,MATLAB®が生成する乱数の統計的な特性に影響を与えることがあるため,MATLABセッションごとに何度も実行することは望ましくありません。

s = RandStream(“mt19937ar”“种子”“洗牌”);

ストリームを使用して,0 ~ 1の範囲で一様分布する乱数値をもつ3行3列の行列を作成します。

X1 = rand(s,3)
X1 =3×30.2497 0.3272 0.2954 0.8946 0.5519 0.8032 0.6320 0.1276 0.7530

ストリムから,別の乱数を5作成します。

X2 = rand(s,1,5)
X2 =1×50.0934 0.0876 0.8597 0.7502 0.1377

シドが0の乱数ストリムを作成します。

s = RandStream(“mcg16807”“种子”, 0);

ストリムから,乱数を5生成します。ストリ,ムから数値を生成するたびに、発生器アルゴリズムは、次に生成される数値が前の数値と独立同一分布するよう、内部状態を変化させます。

U1 = rand(s,1,5)
u1 =1×50.2190 0.0470 0.6789 0.6793 0.9347

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

savedState = s.State;U2 = rand(s,1,5)
u2 =1×50.3835 0.5194 0.8310 0.0346 0.0535

前回の5の乱数の結果を再現するには,発生器の状態を保存された状態に復元します。

s.State = savedState;U3 = rand(s,1,5)
u3 =1×50.3835 0.5194 0.8310 0.0346 0.0535

発生器の状態の読み書きは,ストリ,ムから特定の結果を再現する場合にのみ行ってください。

シドが3の乱数ストリムを作成します。ストリ,ムを使用して、乱数を 8 つ生成します。

流= RandStream(“dsfmt19937”“种子”3);Z = rand(流,1,8)
z =1×80.2550 0.8753 0.0908 0.1143 0.3617 0.8210 0.8444 0.6189

乱数ストリ,ムを,シ,ドが3である初期状態にリセットします。生成された8の乱数を再現します。

重置(流,3);Z = rand(流,1,8)
z =1×80.2550 0.8753 0.0908 0.1143 0.3617 0.8210 0.8444 0.6189

ストリ,ムのシ,ドをリセットすると,他のストリ,ムにより独立性を無効にできます。ストリ,ムのリセットは,ストリ,ムの結果を再現する場合にのみ行ってください。

乱数ストリムを2作成します。1 .目のストリ,ムは,RandStream.setGlobalStreamを使用して,グロ,バルストリ,ムとして設定します。

globalStream = RandStream(“mlfg6331_64”“NormalTransform”“极地”
globalStream = mlfg6331_64随机流种子:0 NormalTransform: Polar
RandStream.setGlobalStream (globalStream);

現在のグロ,バルストリ,ムを表示するには,RandStream.getGlobalStreamを使用します。

RandStream.getGlobalStream
ans = mlfg6331_64随机流(当前全局流)种子:0 NormalTransform:极性

新規作成したグロバルストリムとは別に動作する2目のストリム,myStreamを作成します。

myStream = RandStream(“dsfmt19937”“NormalTransform”“反转”
myStream = dsfmt19937随机流

グロバルストリムから乱数を3生成します。作成したロ,カルストリ,ムmyStreamから乱数を3生成します。

randn(1、3)
ans =1×30.8715 1.0588 -0.6956
randn (myStream 1 3)
ans =1×3-1.8723 -0.7956 -0.5273

関数兰德randn兰迪myStreamなしで呼び出した場合,グロ,バルストリ,ムから取得され,myStreamありで呼び出した場合の結果に影響を与えません。

発生器の種類によっては,1。異なるサブストリ,ムから生成される値は,相互に独立しています。

たとえば,結合多重再帰発生器を使用して,乱数ストリ,ムを作成します。

s = RandStream(“mrg32k3a”);

あるストリ,ムを特定のサブストリ,ムに再配置するには,そのSubstreamプロパティを設定します。たとえば,ル,プで乱数を生成します。ル,プの各反復の前に,乱数ストリ,ムを別のサブストリ,ムの最初に配置します。5の乱数の互いに独立したセットを3組生成します。

I = 1:3 s。Substream= i; z = rand(s,1,5)结束
z =1×50.7270 0.4522 0.9387 0.2360 0.0277
z =1×50.5582 0.8527 0.7733 0.0633 0.2788
z =1×50.1666 0.2924 0.7728 0.8391 0.5107

5。

s.Substream = 2;Z = rand(s,1,5)
z =1×50.5582 0.8527 0.7733 0.0633 0.2788

詳細

すべて展開する

拡張機能

バ,ジョン履歴

R2008bで導入