10

我的 Perlin 噪声函数(以 0.75 持久性将 3D 单纯形的 6 个八度音阶相加)生成doubles 的 2D 数组数组。

这些数字每个都归一化为 [-1, 1],平均值为 0。我将它们钳制以避免异常,我认为这是由于浮点精度问题,但我相当确定我的缩放因子足够好在理想情况下,将噪声输出限制在这个邻域。

无论如何,这就是所有细节。关键是,这是一个 256×256 的噪声数组:

在此处输入图像描述

正常拟合的直方图如下所示:

在此处输入图像描述

Matlablillietest是一个应用 Lilliefors 检验来确定一组数字是否来自正态分布的函数。我的结果反复是 1,这意味着这些数字不是正态分布的。

我想要一个函数f(x),当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。

我希望这个函数可以在 C# 中实现,并且不需要几分钟即可运行。

再一次,数字来自哪里并不重要(问题是关于将一​​种分布转换为另一种分布,特别是将正常分布转换为均匀分布)。尽管如此,我的噪声函数实现是基于thisthis您可以在此处找到上述值数组。

4

2 回答 2

8

奇怪的是,我刚刚就您的问题写了一篇文章:

http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/

在那里,我讨论了如何将均匀分布转换为其他分布,但当然您可以使用类似的技术来转换其他分布。

于 2012-03-03T21:52:55.457 回答
2

您可能会对以下(相关)技术之一感兴趣:

于 2012-03-03T21:06:17.250 回答