【发布时间】:2013-04-13 05:39:44
【问题描述】:
我在我的模拟模型中使用了 2 个统一随机数块,但每次我运行程序时,它们都会生成最后一个数字(完全相同)。我需要用新生成的数字测试模型。我该怎么办?
提前感谢您的帮助
【问题讨论】:
我在我的模拟模型中使用了 2 个统一随机数块,但每次我运行程序时,它们都会生成最后一个数字(完全相同)。我需要用新生成的数字测试模型。我该怎么办?
提前感谢您的帮助
【问题讨论】:
随机数生成器“从一开始”就生成相同的随机数这一事实是一项功能,而不是错误。它允许进行可重复的测试。您需要使用“随机种子”初始化随机数生成器,以便每次都给出不同的结果 - 例如,您可以使用当前时间。当您这样做时,建议您存储使用的种子 - 这意味着您可以返回并再次运行完全相同的代码。
要初始化一个随机种子,可以使用this earlier answer中给出的方法
在那个答案中,他们将种子设置为0 - 这与您尝试做的相反。您将要生成一个非随机数(如日期),并使用它。一篇很有用的文章可以在here找到。引用:
如果您在新的 MATLAB 中查看 rand、randi 或 randn 的输出 会话,您会注意到它们返回相同的数字序列 每次重新启动 MATLAB。能够重置通常很有用 随机数生成器到那个启动状态,实际上没有 重新启动 MATLAB。例如,您可能想要重复计算 这涉及到随机数,并得到相同的结果。
他们推荐这个命令
rng shuffle
生成一个新的随机种子。您可以访问与
一起使用的种子rng.seed
并将其存储起来以备将来使用。所以如果你合作
rng shuffle
seedStore = rng.seed;
那么下次你想重现结果时,你设置
rng(seedStore);
【讨论】: