首页 > 解决方案 > Java Random 类的 Javascript 实现,它将生成具有相同种子的相同序列

问题描述

第一次我在这里和通过谷歌进行了多次搜索,如果我没有使用正确的搜索词来找到它,我很抱歉提前找到它。

我正在将一些遗留的 Java 代码重写为 Javascript,除了伪随机数生成器之外,我已经完成了所有工作......我需要这段代码的 Javascript 版本通过这段代码的 Java 和 Javascript 版本具有可重复的输出为这样我不能使用 Javascript 的 RN 生成器...我也不能更改旧代码以使用另一个 RN 生成器....

所以我希望有人遇到过类似的情况并且已经这样做并将Java的RNG编写/移植到Javascript中?

考虑到 javascripts 位操作符仅适用于 32 位字,而 Java 的 RNG 基于 64 位种子,是否有可能......显然需要两个变量,每个变量都持有 1/2 的种子......


来自https://docs.oracle.com/javase/8/docs/api/java/util/Random.html

标签: javascriptjavarandomgenerator

解决方案


我创建了一个 ES6 类,它在我的测试中产生与java.util.Random该类相同的结果。到目前为止,我只实现了.nextInt()公共方法,但它是通过.next()受保护的方法实现的,因此其他公共方法应该很容易实现:

https://gist.github.com/raybellis/4c15a1746724be7bd03964e9d03e0c75

编辑此增强版本现在可作为 NPM 使用:

https://www.npmjs.com/package/java-random


推荐阅读