2016-10-22 7 views
1

forループでは、すべての「乱数」を生成するために1つの乱数シードを使用します。私は一度にストリームから1つを取るので、ギャップはありません。MATLAB:parforまたは並列計算で乱数を生成する

しかし、parforでは、各ワーカーは異なるランダムシードを使用しているため、取得された数は互いに干渉している可能性があります。したがって、彼らは単一の種から来ていないので、実際にランダムではありません。

また、私の場合は、事前に各労働者が必要とする乱数の数がわかりません。どうすればこの問題を解決できますか?

+0

Whoa。これは難しいだろう。私がやること:すべての労働者に同じ種子を使用させますが、大きな配列には異なる数を使用してください。彼らはそれぞれ1つしか必要ではないと想像してください。 80人の労働者がそれぞれ80の乱数を作り、ただ1つを使用します。または、スライスされた変数を乱数を持つワーカーに渡します。はい、両方の方法には制限がありますが、解決できない問題に対処しています –

+1

分散シーディングをルックアップします。多くの方法があります。さまざまな構成のMTを使用してください(〜600のようなものがあります)。この(およびカスタマイズされたコードの)余分な紙(非干渉に関する強い議論がある)があります。飛び越し能力を有するPRNGを使用する(例えば、2^40サンプルだけジャンプする)。飛びぬきや他にもたくさんあります。 – sascha

+0

@Ander Biguriありがとう。各作業者は1つの乱数を使用するだけではありません。私はあらかじめ各労働者が必要とする乱数の数を知らない。 – kyle

答えて