【发布时间】:2012-03-21 22:24:08
【问题描述】:
我的 Perlin 噪声函数(以 0.75 持久性将 3D 单纯形的 6 个八度音阶相加)生成 doubles 的 2D 数组。
这些数字都归一化为 [-1, 1],平均值为 0。我将它们钳制以避免异常,我认为这是由于浮点精度问题,但我相当确定我的缩放因子是在理想情况下,足以将噪声输出限制在这个邻域。
无论如何,这就是所有细节。关键是,这是一个 256×256 的噪声数组:
正常拟合的直方图如下所示:
Matlab 的 lillietest 是一个函数,它应用 Lilliefors 检验来确定一组数字是否来自正态分布。我的结果反复是 1,这意味着这些数字不是正态分布的。
我想要一个函数 f(x),这样,当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。
我希望这个函数可以在 C# 中实现,并且不需要几分钟即可运行。
再一次,数字来自哪里并不重要(问题是关于将一种分布转换为另一种分布,特别是将正常分布转换为均匀分布)。尽管如此,我的噪声函数实现是基于this 和this。你可以找到上面的值数组here。
【问题讨论】:
-
该直方图看起来很正常,但是您可以互换使用 uniform 和 normal(它们不是)。考虑到柏林噪声的工作原理,尤其是连续性,正态分布比均匀分布更有可能。
-
那么,你想要正态分布还是均匀分布?这两者完全不同。
-
我当然想要一个统一的分布。正如你所看到的,我已经得到了一个普通的。 @peachykeen 我在哪里做的?此外,如上所述,根据 Lilliefors 检验,分布不正常。
标签: c# random statistics probability perlin-noise