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 프로그램에서 사용하기 때문입니다 ...