我有一个确定性的matlab函数。我在我们的数据上运行它,并得到答案。现在如果我再次重复这个,在同一组数据上运行相同的确定性函数,我会得到一个不同的(错误的答案)。如果我关闭matlab,然后重新打开该函数,再次运行该函数,我将再次得到正确的答案。连续运行该函数会产生错误的答案。这不是一些不被清除的变量的问题,因为我可以在连续运行之间键入clearvars
,并且在重新启动matlab之前函数仍然会产生错误的答案。
之前有没有人经历过这种行为?知道是什么原因引起的吗?
答案 0 :(得分:0)
如果您的代码直接或间接使用生成随机数的函数,则应确保在每次运行开始时使用相同的状态/种子。
示例:
rand('twister',5489)
rand(1,5)
rand('twister',5489)
rand(1,5)
您将在两者中获得相同的输出:
ans =
0.81472 0.90579 0.12699 0.91338 0.63236
请注意,random number generator syntax在最近的MATLAB版本中发生了变化(尽管保持了向后兼容性)。
实现上述目标的新方法是:
RandStream.setDefaultStream( RandStream('mt19937ar','Seed',5489) );
rand(1,5)
或者使用新引入的RNG函数:
rng(5489,'twister')
rand(1,5)