【发布时间】:2021-06-27 11:35:13
【问题描述】:
所以我一直在开发一款利用程序地形和结构生成的游戏。现在,我正在处理结构生成问题——我使用了 Poisson-Disc 采样,我计划在我的世界中实现它。但是,我的采样依赖于一个单一的种子。有没有办法接受 3 个或更多数字来输出与这些数字有某种关联的随机数?
另一方面,随机数不必在输入的可能范围内。
如果不可能,是否有任何其他范例可以在无限程序生成的世界上实施泊松圆盘采样(或其替代方案)以创建结构?我有点卡住了。
例子:
Random x = new Random(138013, 28282, 37920)
x.nextInt() = 38309
Random y = new Random(138012, 28282, 37920)
y.nextInt() = 28323
Random z = new Random(138013, 28282, 37920)
z.nextInt() = 38309
//new Random(a,b,c).nextInt() does not have to be within ranges [a,b], [a,c], [b,c]
【问题讨论】:
-
完全不清楚您在这里寻找什么。如果您打算使用 Java 的内置 PRNG,则状态为 48 位。您所做的任何播种都将被折叠为 48 位,因此向堆中添加更多数字不会获得任何好处,因为它们只需折叠为 2^48 状态之一。如果您使用第三方生成器,例如 MT19937 或 WELL,它使用更大的状态,可以相应地播种。如果您打算创建自己的 PRNG,请不要 - 无论您认为创建一个好的 PRNG 有多难,我保证它比这更难。
-
请注意,
nextInt()永远不应位于赋值表达式的左侧。
标签: java random noise poisson procedural-generation