首页 > 解决方案 > Java 8 中的 java.util.Random 使用哪种伪随机数生成器算法?

问题描述

我试图找出 java.util.Random 在 java 8 中是如何生成它的随机数的,更具体地说是它背后的算法。我一直看到的是如何在 java 8 中生成随机数,而不是它背后的驱动力。

如果您可以向我指出有关 java.util.Random 使用的 PRNG 的任何文档,那将是完美的。

另外,如果它已经完成,有没有办法在 python 中复制 java.util.Random 的输出?使用种子 5 和 int 范围 0 到 100 的快速测试为 python 随机模块提供不同的结果

标签: randomjava-8

解决方案


引用Java 文档

此类的一个实例用于生成伪随机数流。该类使用 48 位种子,该种子使用线性同余公式进行修改。(参见 Donald Knuth,计算机编程的艺术,第 2 卷,第 3.2.1 节。)

因此,似乎使用了具有 48 位种子的线性同余生成器。

我无法访问提到的书,但我想它会提供更详细的信息。


推荐阅读