Matlab Random和C ++ Random有相同的种子吗?

时间:2014-07-23 10:01:10

标签: c++ matlab random random-seed

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

2 个答案:

答案 0 :(得分:3)

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

无法保证Matlab和c ++ :: std实现会生成相同的结果。虽然认为它们应该是合理的 - 毕竟它是相同的算法。根据{{​​3}},实现有各种风格。最值得注意的是32位和64位实现之间的差异会产生不同的结果。

要克服这个障碍,请在一个工具中生成数字,然后在另一个工具中使用相同的序列。或者使用您自己的算法 - 一些想法Wikipedia

答案 1 :(得分:1)

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

更多关于故事的MATLAB方面:http://www.mathworks.com/help/matlab/random-number-generation.html