私は、parforループにスクランブルされた準モンテカルロ数を生成する問題があります。Parforループでスクランブルされた準モンテカルロ数を生成する問題
問題は、私がparforループ内でこれらの数字の複数のセットを生成すると、各セットの数字が同じになることです。私は以下の非常に簡単な例を含めています。
>>numbers{1}(1:3,:)
ans =
0.76 0.05 0.77
0.33 0.96 0.23
0.60 0.72 0.52
>> numbers{2}(1:3,:)
ans =
0.76 0.05 0.77
0.33 0.96 0.23
0.60 0.72 0.52
:問題を実証するために
D = 3;
M = 1000;
numbers = cell(1,4);
mystream = qrandstream(scramble(sobolset(D),'MatousekAffineOwen'));
myfun = @(x) qrand(mystream,x);
parfor i = 1:4
numbers{i} = myfun(M);
end
は、このコードを実行した後、番号の数字は、{1}、番号は{2}、数字{3}と番号は{4}と同一であります私は誰もがこの問題の修正を考えることができるかどうか疑問に思っています。私は、通常の乱数列を使用するときに問題が発生しないので、私ができることがなければならないと考えています。
Quasi-Random Numberストリームの 'Skip'や 'Leap'のようなものを悪用することはできません。その理由は、上記のコードスニペットを、私が並列に実行する大規模なMATLABプログラムで使用しているからです...