我有一個問題,在PARFOR循環產生炒擬蒙特卡羅的數字。遇到類似問題炒擬蒙特卡羅數字在PARFOR循環
的問題是,當我一個PARFOR循環內產生的多組這些數據的,每組中的數字最終是相同的。我在下面包括一個非常簡單的例子。
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}是相同的爲:
>>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
我想知道是否有人可以考慮解決這個問題。我認爲必須有一些我可以做的事情,因爲當我使用普通的隨機數字流時,問題不會發生。
我應該指出,這是不可能的,我利用類似的「跳過」或準隨機數流「大躍進」的屬性。其原因是,我在我並行運行較大的MATLAB程序使用的代碼片斷上面...