【发布时间】:2014-07-26 14:29:45
【问题描述】:
对于 Perlin 噪声的实现,我需要从 n 个向量的静态列表中为 3D 空间中的每个整数坐标选择一个向量。这归结为在 1..n 中从四个有符号整数值 x、y、z 生成一个伪随机数em> 和 种子。
unsigned int pseudo_random_number(int x, int y, int z, int seed);
算法应该是无状态的,即每次调用它时都返回相同的数字,并使用相同的输入值。
我查看的现有 Perlin 噪声实现将每个整数与一个大素数相乘,将结果相加,对其进行一些位操作,并提示除以 n。我不想只是复制它,因为我不了解它的一些内容:
- 如何选择素数?
- 为什么要进行额外的位操作?
- 我如何知道这是否“足够伪随机”以产生视觉上令人愉悦的结果?
我寻找有关 PRNG 工作原理的解释,但找不到有关多个输入值的任何信息。
【问题讨论】:
-
我认为您不知道要保留“柏林噪声”的哪些属性,因为您已将参数设为整数。
标签: algorithm random prng perlin-noise