Matlab随机数和C++随机数是否有相同的种子?

6

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


你在MATLAB中使用什么函数来获取随机数? - user2271770
我正在使用MATLAB中的gamrndrandn函数。 - taha
2个回答

3
你希望随机生成器在两个不同的实现中都是确定性的,并且工作方式相同。
不能保证Matlab和c++::std实现将生成相同的结果。尽管这应该是合理的 - 毕竟它们使用的是相同的算法。根据维基百科的说法,实现存在差异。最值得注意的是32位和64位实现之间的差异,会产生不同的结果。
为了克服这个障碍,在一个工具中生成数字,然后在另一个工具中使用相同的序列。或者使用您自己的算法-这里有一些想法这里

1
这种差异(最有可能)源于C++中使用的均匀分布伪随机数,而MATLAB代码使用正态分布伪随机数。在MATLAB代码中尝试使用rand/randi而不是randn(即使用均匀分布整数而不是正态分布双精度数)。更多关于MATLAB方面的信息,请参见http://www.mathworks.com/help/matlab/random-number-generation.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接