【发布时间】:2018-07-10 08:02:02
【问题描述】:
我正在用 C# 和 MATLAB 编写相同的程序。我面临的唯一问题是 MATLAB 和 C# 中生成的不同值,尽管我提供了相同的种子值。
也就是说,两个编译器生成的随机数都不匹配。
例如:
C#:
Random rand = new Random(10);
double val = rand.Next(1, 100);
它的起始随机数是:95
MATLAB:
rng(10);
r2 = randi([1 100],1,1)
虽然起始随机数是:77
谁能帮帮我?
如何让两个编译器以相同的随机数开头?
【问题讨论】:
-
有很多算法可以产生相同的伪随机数。您必须在 Matlab 和 C# 中实现相同的算法。
-
能不能给个链接
-
从here看来,matlab 通常使用 Mersenne Twister
-
但这也意味着它可以使用各种算法中的任何一种。但如果没有这些来源,无论如何你都必须依靠反复试验..
-
它没有用。你是对的,我们不知道他们内部的随机数生成算法。
标签: c# matlab .net-core matlab-compiler