0

我在我的模拟模型中使用了 2 个统一随机数块,但每次我运行程序时,它们都会生成最后一个数字(完全相同)。我需要用新生成的数字测试模型。我应该怎么办?

提前感谢您的帮助

4

1 回答 1

3

随机数生成器“从一开始”就生成相同的随机数这一事实是一个特性,而不是一个错误。它允许进行可重复的测试。您需要使用“随机种子”初始化随机数生成器,以便每次都给出不同的结果 - 例如,您可以使用当前时间。当您这样做时,建议您存储使用的种子 - 这意味着您可以返回并再次运行完全相同的代码。

要初始化随机种子,您可以使用此较早答案中给出的方法

在那个答案中,他们正在播种0-这与您尝试做的相反。您将要生成一个非随机数(如日期),并使用它。可以在这里找到一篇非常有用的文章。去引用:

如果您在新的 MATLAB 会话中查看 rand、randi 或 randn 的输出,您会注意到每次重新启动 MATLAB 时它们都会返回相同的数字序列。能够将随机数生成器重置为该启动状态通常很有用,而无需实际重新启动 MATLAB。例如,您可能希望重复涉及随机数的计算,并获得相同的结果。

他们推荐命令

rng shuffle

生成一个新的随机种子。您可以访问使用的种子

rng.seed

并将其存储以备将来使用。所以如果你合作

rng shuffle
seedStore = rng.seed;

然后下次你想重现结果时,你设置

rng(seedStore);
于 2013-04-19T18:28:40.127 回答