【发布时间】:2011-09-22 03:14:10
【问题描述】:
我需要一个伪随机数生成器,它可以从两个浮点类型的输入中为我提供一个范围为 [-1, 1](范围是可选)的数字。
我也会尝试解释我为什么需要它:
我正在使用Diamond-Square algorithm 为我的地形引擎创建高度图。地形被分割成块(Chunked LOD)。
Diamond-Square 的问题在于它使用随机函数,所以假设两个相邻块共享同一个点 (x, z),那么我希望它们的高度都相同,这样我就不会获得一些裂纹效果。
有人可能会说我可以从邻居补丁中获取高度信息,但是在首先创建补丁之后结果可能会有所不同。
这就是为什么我需要一个伪数生成器,它在给定两个输入(x,z)的情况下返回一个唯一数字。
(我不是要求某人编写这样的函数,我只需要一般反馈和/或执行类似操作的已知算法)。
【问题讨论】:
-
我不太明白这个问题。您如何定义基于两个数字的随机数?如果它是随机的,那就是随机的,唯一需要担心的因素是种子和分布。如果这是您的目标,种子可以是这两个输入数字的任意组合。但结果仍然是完全随机的。请说明您对尝试生成的数字的期望。
-
这很好,但有两件事:第一,我们不会为您编写代码,第二 - 即使我们需要知道您使用的是什么语言。
-
它不应该是随机的,我只是说 Diamond-Square 得到一个随机数。我要求给定 x、z 的唯一数字,或者换句话说,给定两个输入的某个伪数生成器。这个问题上的随机标签相当混乱,我应该删除它。我不是要求任何人为我编写函数,但我很想得到一些反馈、方向或已知的算法。谢谢!
标签: algorithm math random terrain level-of-detail