我有一个parfor
用于并行计算的循环Matlab
。我希望parfor
在 8 个工作人员的每次调用这些循环中都有不同的随机数。如果我不使用rng('shuffle')
函数,我有相同的随机数randperm(10)
。在这种情况下,我的代码在所有工作人员中同时运行rng('shuffle')
之前的功能。randperm
在这种情况下我有不同的随机数吗?当我在 parfor 循环中看到randperm
输出时,其中一些输出是相同的!
我需要rng
先保存并在结束并行循环后rng('shuffle')
使用类似的东西?rng(saved_rng)
我们有这个Matlab
帮助:
注意 因为 rng('shuffle') 会根据当前时间为随机数生成器播种,所以如果要确保独立流,则不应使用此命令在不同的 worker 上设置随机数流。当命令同时发送给多个工作人员时尤其如此,例如在 parfor、spmd 或通信作业中。对于worker上的独立流,使用默认行为;或者,如果这不足以满足您的需求,请考虑在每个工作人员上使用唯一的子流。
所以我该怎么做?如果我删除,我有不同的随机数rng
吗?我有这些代码的两个版本。其中之一是计算parfor
和其他使用for
循环,我可以shuffle
从for
循环中删除吗?在这种情况下我有不同的随机数?
谢谢。
附言。
我可以有这些结构:
parfor I=1:X
xx = randperm(10)
end
parfor I=1:X
rng('shuffle');
xx = randperm(10)
end
rng('shuffle');
parfor I=1:X
xx = randperm(10)
end
我想从randperm
函数中获得不同的随机数。我怎样才能做到这一点?对于for
结构我需要shuffle
函数(没有它,随机数是相同的)但是当我将它添加到parfor
一些随机输出时randperm
是相同的!