假设我们有两个m文件:
第一个是功能:
function XX = ofx()
for i=1:2
aa = randperm(5)
end
end
第二个:
rng(0);
for i=1:2
xx = randperm(3)
end
ofx();
你可以看到,当我们一次又一次地运行第二个代码时,输出是相同的。为什么我们在randperm
中都有这些相同的输出?我只想要xx
随机数而不是ofx
函数的相同随机生成器。我怎样才能做到这一点?我怎样才能将rng
用于特定功能?
感谢。
答案 0 :(得分:1)
问题不在于功能。问题在于,对于RNG的某些用途,您需要可重复的数字序列,而对于其他用途,您需要不重复的数字序列。为此,您需要仔细控制RNG的状态。我会改变你对它们的看法,让你的可重复案例保存,然后恢复状态。
rng_state = rng(0); % Save (pseudo-) random state of RNG, then seed with known value
for i=1:2
xx = randperm(3);
end
rng(rng_state); % Restore saved state so other RNG calls work as expected
ofx();