跨系统和版本的java伪随机数的再现性?

在给定初始整数参数的情况下,我需要生成受控的伪随机数序列。 为此,我使用标准Java Random类,由整数参数播种。 我想确保在可预见的未来(甚至更多!)中我将跨系统(操作系统,还有Java / JDK版本)生成相同的序列。

总结:Java是否确保其伪随机数生成器在实现版本中的可重复性/可移植性?

注意:我已经为Python提出了完全相同的问题 。 我之后将实现语言改为Java,但出于其他原因。

是。

javadoc解释说:

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

如果使用相同的种子创建两个Random实例,并且为每个实例创建相同的方法调用序列,则它们将生成并返回相同的数字序列。 为了保证此属性, Random类指定了特定的算法 。 为了Java代码的绝对可移植性,Java实现必须使用此处显示的所有算法用于class Random但是, class Random类的子class Random允许使用其他算法,只要它们遵守所有方法的一般合同即可。