【问题标题】:Are there any same seed for Matlab Random and C++ Random?Matlab Random 和 C++ Random 是否有相同的种子?
【发布时间】:2014-09-14 11:01:50
【问题描述】:

我在 C++ 中尝试了 std::mt19937 gen(2007),在 Matlab 中尝试了 RandStream.create('mt19937ar','seed',2007)。我也尝试过不同的结构,但我找不到特定的种子结构来在 Matlab 和 c++ 之间找到相同的随机数。我该如何处理?

【问题讨论】:

  • 你在 MATLAB 中使用什么函数来获取随机数?
  • 我在 MATLAB 中使用 gamrndrandn 函数。

标签: c++ matlab random random-seed


【解决方案1】:

您希望随机生成器具有确定性,并在两个不同的实现中以相同的方式工作。

不保证 Matlab 和 c++::std 实现会产生相同的结果。尽管认为他们应该这样做是合理的——毕竟这是相同的算法。根据Wikipedia 的说法,实现方式有很多。最值得注意的是产生不同结果的 32 位和 64 位实现之间的差异。

为了克服这个障碍,在一个工具中生成数字,然后在另一个工具中使用相同的序列。或者使用你自己的算法——一些想法here

【讨论】:

    【解决方案2】:

    差异(很可能)源于在 C++ 中使用均匀分布的伪随机数,而 MATLAB 代码使用正态分布的伪随机数。在 MATLAB 代码中尝试 rand/randi 而不是 randn(即非正则分布的整数而不是正态分布的双精度数)。

    有关 MATLAB 方面的更多信息:http://www.mathworks.com/help/matlab/random-number-generation.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2020-03-21
      相关资源
      最近更新 更多