2014-02-09 44 views
1

我有一个无限的2D网格,并且需要为每个网格位置随机分配一个值。有一个有限数量的整数值。我需要彼此靠近的地点具有相似的价值观,从而创造出价值基本相同的“地点”。我之前曾尝试使用Perlin噪声算法,但赋予给我的值并不均匀分布,导致某些可能值比其他值更为常见。从网格列表中寻找随机噪声类项目

目前,我的算法看起来有点像这样:

n = perlin(x/scale,y/scale) (scale is for coherence) 
n = abs(n)/amplitude of Perlin function (as to make it between 0 and 1) 
return floor(n*(max value)) 

然而,这创造了极为不均衡值无论我怎么调整的功能。有没有更好的方法来创建像这样的值?

回答

1

为了获得网格上的一致性,您需要从整数网格中采样perlin噪声。例如:n = perlin(x/10.0, y/10.0)

+0

我已经做了几个值,但我发现,虽然一致,这些值是非常接近的大小;一般来说,最少的几个可能值占用了所有生成的网格。 – Iconmaster