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