gpt4 book ai didi

MATLAB:如何在 parfor 中设置随机种子以产生与 serial for 相同的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:47 26 4
gpt4 key购买 nike

我设置了以下最小示例:

rng(0);

randseedoffset = random('unid', 10^5) + 1;

t = cell(10,1);
for i = 1:10
rng(randseedoffset+i);
t{i} = random('unid', 1000);
end

disp(t);

这将生成 10 个随机数并将它们存储在 t 中。它总是会可靠地产生相同的随机数,因为我在 for 循环中使用 rng 设置了种子。

如果我现在将 for 更改为 parfor,我会得到不同的结果!尽管它们也将始终是可复制的。

我想用 parfor 加速我的代码,并且仍然获得与 for... 完全相同的随机数

最佳答案

好的,我刚找到原因:

MATLAB 支持不同的随机数生成算法。在当前版本的通常设置中,这是 Mersenne Twister。当您进入 parfor 循环时,这会变成他们所说的“组合递归方法”。

可以通过在循环中将类型显式设置为 'twister' 来解决此问题:

parfor i = 1:10
rng(randseedoffset+i, 'twister');
t{i} = random('unid', 1000);
end

关于MATLAB:如何在 parfor 中设置随机种子以产生与 serial for 相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17111111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com