gpt4 book ai didi

java - 生成三维随机数空间的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:24 24 4
gpt4 key购买 nike

我正在寻找一种算法来在大范围的三维(或更好的 n 维)空间中生成伪随机数。当使用种子初始化时,生成器应该能够为同一种子重复生成相同的数字。

但与编程语言中可用的大多数生成器不同,它不应该只返回序列中的下一个随机数,而是为特定坐标生成数字,无论以什么顺序请求值。

应该认为空间的大小太大,无法在初始化时生成所有数字。在 Java 中,它看起来像这样:

Random3D gen = new Random3D(seed);
int n1 = gen.getInt(3,0,6);
int n2 = gen.getInt(2,-3,1);
...

我该如何做这样的事情?

我通过使用 java.util.Random 编写一些代码在 Java 中进行了尝试,但结果的质量不是很好。

最佳答案

如果您希望针对相同的坐标始终收到相同的结果,那么当您指定种子时,您并不是在寻找真正的随机生成器。

您想要一种快速、可靠的算法?对于快速的,看看Mersenne twister .对于更强的,你可以看Blum Blum Shub .

您可以使用您的 n 维坐标和您的种子来生成伪随机数生成器。例如,您可以计算坐标 + 种子的 sha1 或 md5 或任何其他哈希值,并将其用于 PRNG。

编辑:对于一个简单的解决方案,math.random 可以接收 48 位的种子(小于 md5 输出),这对于您的问题来说可能有点小(您提到具有高维度,对吧?大坐标?)

关于java - 生成三维随机数空间的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586042/

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