【发布时间】:2013-11-13 11:36:18
【问题描述】:
我是以色列 Ariel 大学的学生,我正在尝试在 C# 中实现 Matlab RAND 和 RANDN,这样对于 Matlab 和 C#(具有相同种子)的相同输入,Randn 和 Rand 将给出相同的结果两种语言。
例如:
在 Matlab 中:
rand('seed',123)
disp(rand)
输出:0.0878
在 C# 中:
Console.WriteLine(MyRand(123));
输出:0.0878
我认为要实现这种功能,我需要在 Matlab 中有 RAND 和 RANDN 的源代码。有人有这个代码并且可以分享吗?
非常感谢,
西蒙
【问题讨论】:
-
您站在公共场所,要求有人通过向您提供专有源代码来违法。一方面,我与这样的企业无关。
-
好吧,除非我得到丰厚的回报。
-
rand 默认情况下使用 mersenne twister 算法,基本上你能找到的所有编程语言都应该使用该算法。
-
我不认为你会得到源代码:/但你可以看到他们在文档中使用的算法:mathworks.com/help/matlab/ref/rng.html 但如果它们是参数的,那么我怀疑你会能够准确地复制他们的实现。忽略您的速度要求,我建议使用 Matlab .NET 编译器并只使用 Matlab 的(因为我假设您这样做是为了比较随机算法)
-
请注意,
rand('seed',123)不再是最新版本的 matlab 的推荐语法。如果您尝试重现他们的代码,我建议您关注最新版本。