我是来自以色列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的源代码。有没有人有这个代码并可能分享?
非常感谢,
希蒙
答案 0 :(得分:2)
这样做的:
>> s = RandStream.getGlobalStream()
s =
mt19937ar random stream (current global stream)
Seed: 0
NormalTransform: Ziggurat
您给出的随机数生成器算法和用于获取正态分布数的转换。 两者都是公开可用的算法。 Google为您提供了例如:
http://www.math.sci.hiroshima-u.ac.jp/~%20m-mat/MT/MT2002/emt19937ar.html 和 http://www.jstatsoft.org/v05/i08/paper
描述两种算法,包括参考/示例实现。
答案 1 :(得分:1)
如果是这样:搜索任何实现。该算法应记录在案。
答案 2 :(得分:0)
但严重的是,如果你输入
edit rand.m
进入Matlab命令窗口,
edit randn.m
我认为您将获得与Mathworks发布的有关这些功能的信息。此信息指向所使用的算法,也适用于rand
实现。
答案 3 :(得分:0)
由于您的问题仅提到获得相同的结果,我建议使用以下其中一项: