My Perlin噪声函数(以0.75持久性加上6个八度的3D单形)生成double
s的2D数组。
这些数字各自归一化为[-1,1],均值为0.我钳制它们以避免异常,我认为这是由于浮点精度问题,但我相当确定我的缩放因子是足够好,可以在理想情况下将噪声输出限制在这个邻域。
无论如何,这都是细节。关键是,这是一个256乘256的噪音阵列:
正常拟合的直方图如下所示:
Matlab的lillietest
是一个函数,它应用Lilliefors测试来确定一组数字是否来自正态分布。我的结果反复是1,这意味着这些数字不是正常分布的。
我想要一个函数f(x)
,这样当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。
我希望这个函数可以在C#中实现,而不需要花费几分钟来运行。
再一次,数字的来源无关紧要(问题是关于将一个分布转换为另一个分布,特别是正常的分布到统一分布)。然而,我的噪声函数实现基于this和this。您可以找到上面的值数组here。
答案 0 :(得分:5)
奇怪的是,我刚刚在你的问题上写了一篇文章:
http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/
在那里,我将讨论如何将统一分布转换为其他分布,但当然您可以使用类似的技术来转换其他分布。
答案 1 :(得分:2)
您可能会对以下(相关)技术之一感兴趣: