C#中分形Perlin噪声函数的均匀分布

我的Perlin噪声函数(在0.75持续时间内加上6个八度的3D单形)产生一个double s的2D数组。

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

无论如何,这都是细节。 关键是,这是一个256乘256的噪音arrays:

在此处输入图像描述

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

在此处输入图像描述

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

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

我希望这个函数可以在C#中实现,而不需要花费几分钟来运行。

再一次,数字的来源无关紧要(问题在于将一个分布转换为另一个分布,特别是正常的分布转换为统一分布)。 不过,我的噪音function实现基于此和此 。 您可以在此处找到上述值数组。

奇怪的是,我刚刚在你的问题上写了一篇文章:

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

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

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

  • 概率积分变换

  • 直方图均衡