Java VS Matlab:Math.random()和rand

Pat*_*ick 1 java random matlab

我想问一下Java和Matlab中的随机数.

Java中的Math.random和Matlab中的rand有相同的含义或两者有什么不同?如果意义不同,有什么区别?

Gam*_*ows 6

对于MATLAB,请参阅http://www.mathworks.com/company/newsletters/news_notes/pdf/Cleve.pdf这也解释了乘同余发生器在Matlab中是如何工作的.

对于Java,请参阅http://www.javamex.com/tutorials/random_numbers/java_util_random_algorithm.shtml#.VsMAw3WLSkA,它解释了线性同余生成器如何在Java Utils类中生成随机数.

两者基本上是相同的算法,其中Matlab的MCG是LCG的特例,请参见此处:https://en.wikipedia.org/wiki/Linear_congruential_generator

是的,C++(Borland),Java.Utils,Matlab语言使用的算法基本相同,因为它是高效的 - 它具有极高的内存效率,它具有扁平的线性分布(即伪随机) - >但它很差质量伪随机,因为串行相关.

但是那里有更好的算法,不同的算法,以Python为例,使用Mersenne Twister算法作为其PRNG,但感知结果的随机性要小得多,请仔细阅读:随机几乎没有随机性?