【问题标题】:Java VS Matlab : Math.random() and randJava VS Matlab:Math.random() 和 rand
【发布时间】:2016-02-16 10:48:14
【问题描述】:

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

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

【问题讨论】:

  • 他们有可能但不太可能使用相同的公式来生成伪随机数。

标签: java matlab random


【解决方案1】:

对于 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,但感知结果的随机性要小得多,请阅读:Random is barely random at all?

【讨论】:

  • 不客气,我相信目前世界上已知最好的 PRNG 算法是 WELL (iro.umontreal.ca/~panneton/WELLRNG.html)。根据您使用的随机数,通常 Matlab/Java.Utils 就足够了,但是如果您正在做类似蒙特卡洛模拟的事情,我想您可能想要加载一个使用异或移位算法的 Mersenne Twister 的库以获得更准确的解释。
  • 很好的答案。非常感谢。
  • 在您的最后一段中,问题在于人们对随机性的误解,而不是 Mersenne Twister 的质量。 MT 的输出行为更接近真正随机性应该的方式,而不是人们错误地认为它应该的方式。 80 年代的一篇论文表明,对于整数 PRNG,not 在您点击 ~3 * sqrt(MAX_INT) 时观察到 any 重复构成了强大的 (p > .99) 统计测试的非随机性。给定 32 位整数,这意味着当大多数人认为 ~2B 的完整周期可用时,统计学家可以在 ~200k 值之后发现你。
  • @pjs 完全同意,完全同意。
【解决方案2】:

两者都返回0到1之间均匀分布的伪随机数。生成数字的算法及其质量可能不同,但接口相同。

【讨论】:

    【解决方案3】:

    MATLAB 中有许多不同的随机数生成器。有关详细信息,请参阅the reference page for rng。串行 MATLAB 中的默认值是 Mersenne Twister(Twister 不是并行随机数生成的合适选择,因此对于 Parallel Computing Toolbox 工作人员,并且在 GPU 上,默认值是组合多重递归)。在 GPU 上,additional random number generators are available 具有高质量且非常适合 GPU 执行。

    需要注意的一点:MATLAB 非常小心地进行设置,这样当您开始一个新的 MATLAB 进程时,第一次调用 rand 将始终为您提供相同的结果(对于相同的 MATLAB 版本)。这与 Java 形成鲜明对比,Java 会在您使用 Math.random() 时对种子进行洗牌。

    MATLAB 为您提供了多种强大的方法来通过rng 函数和RandStream 对象的方法来控制正在使用的随机数流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      相关资源
      最近更新 更多