gpt4 book ai didi

java - 如何将 Javascript 中的数组打乱为与 Java 中的 Collections.shuffle(array, seeds) 相同的顺序

转载 作者:行者123 更新时间:2023-11-28 10:58:34 25 4
gpt4 key购买 nike

我正在用 Java 编写一个游戏,我希望我的网站能够在用户浏览器中使用 Javascript 来验证 Java 游戏中使用的随机播放是否真实。

我正在使用 Collections.shuffle(array, seeds);

我希望能够向与 JavaScript 顺序相同的数组提供相同的种子,以获得相同的结果。

这是 Java 中 Collections.shuffle 的源代码:

public static void shuffle(List<?> list, Random rnd) {
int size = list.size();
if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
} else {
Object arr[] = list.toArray();

// Shuffle array
for (int i=size; i>1; i--)
swap(arr, i-1, rnd.nextInt(i));

// Dump array back into list
ListIterator it = list.listIterator();
for (int i=0; i<arr.length; i++) {
it.next();
it.set(arr[i]);
}
}
}

编辑:我还可以为 Java 使用不同的随机播放机制。只要相同的种子就可以在 Java 和 Javascript 上使用

最佳答案

我不相信你能做到。

Java uses an established algorithm with a 48-bit seed生成伪随机数。其次,该数字可以与任何其他数字作为种子来生成另一个模式(并且使用相同种子对 Random 的任何两次调用都将生成相同的模式)。

Javascript doesn't allow you to seed random numbers from jump ,以及在幕后实现的随机数算法 may differ来自Java中使用的算法。

虽然我没有看到在两个不同的地方执行随机操作的目的,但为什么不将其合并为一个呢?让 Java 处理集合的随机化,并让 Javascript 转发该顺序。

关于java - 如何将 Javascript 中的数组打乱为与 Java 中的 Collections.shuffle(array, seeds) 相同的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com