我有一个问题,在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程序使用的代码片断上面...