s = rng;
[idx,~] = kmeans(Z1,ClusterNum);
rng(s);
如上述代码所示,在使用matlab的kmeans函数的时候,原来的随机函数流被破坏,导致后续的随机序列发生改变,从而使得蒙特卡洛迭代得不到正确的结果,为了解决这个问题,我们需要保存当前的随机函数状态,在这里需要使用rng函数来获取当前随机种子状态。即
s = rng;
在调用完kmeans之后,使用
rng(s);
恢复随机种子状态。
matlab的参考文档如下:

本文介绍在使用Matlab的kmeans函数时如何避免随机数状态被更改的问题,通过保存并恢复随机种子状态确保蒙特卡洛迭代正确进行。
96

被折叠的 条评论
为什么被折叠?



