【问题标题】:Uniform Random Number blocks in my simulation model我的模拟模型中的统一随机数块
【发布时间】:2013-04-13 05:39:44
【问题描述】:

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

提前感谢您的帮助

【问题讨论】:

    标签: matlab random simulink


    【解决方案1】:

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

    要初始化一个随机种子,可以使用this earlier answer中给出的方法

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

    如果您在新的 MATLAB 中查看 rand、randi 或 randn 的输出 会话,您会注意到它们返回相同的数字序列 每次重新启动 MATLAB。能够重置通常很有用 随机数生成器到那个启动状态,实际上没有 重新启动 MATLAB。例如,您可能想要重复计算 这涉及到随机数,并得到相同的结果。

    他们推荐这个命令

    rng shuffle
    

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

    一起使用的种子
    rng.seed
    

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

    rng shuffle
    seedStore = rng.seed;
    

    那么下次你想重现结果时,你设置

    rng(seedStore);
    

    【讨论】:

    • Floris 的回答在严格使用 MATLAB 时是一个很好的回答。但是 Simulink 模块略有不同。您需要在 Uniform Random Number generator 模块的对话框中设置/更改种子,而不是在 MATLAB 命令行中,并且每次执行模型时模块都会使用该种子。为了让它“更随机”,将集合设置为 now()。
    • @philGoddard - 感谢您的更新。我不知道 Simulink 的区别。我会检查一下,并在答案中包含信息/链接以确保完整性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多