gpt4 book ai didi

java - 在 Java 中使用整数 vector 作为种子生成随机数

转载 作者:行者123 更新时间:2023-11-29 09:21:44 25 4
gpt4 key购买 nike

我想生成可再现的随机数,表示 3 维空间中不同点的数量,例如

double draw = rand(int seed, int x, int y, int z)

我希望相同的输入始终产生相同的平局。我不想提前生成所有值,因为会太多。

我希望不同位置的抽奖是独立的。我还希望不同种子的相同位置的抽签是独立的。这排除了取四个参数的总和或乘积,并将其用作种子。

最佳答案

怎么样

return new Random(seed ^ x ^ y ^ z).nextDouble();

(因为构造函数的种子参数实际上是 64 位,你可以获得更好的“传播”,比如在 xor:ing 之前将你的两个整数向上移动 32 位)


另一个简单的解决方案是做类似的事情

Random rnd = new Random(seed);
rnd.setSeed(rnd.nextLong() ^ x);
rnd.setSeed(rnd.nextLong() ^ y);
rnd.setSeed(rnd.nextLong() ^ z);
return rnd.nextDouble();

关于java - 在 Java 中使用整数 vector 作为种子生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929859/

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