【问题标题】:Uniform distribution from a fractal Perlin noise function in C#C# 中分形 Perlin 噪声函数的均匀分布
【发布时间】: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# 中实现,并且不需要几分钟即可运行。

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

【问题讨论】:

  • 该直方图看起来很正常,但是您可以互换使用 uniform 和 normal(它们不是)。考虑到柏林噪声的工作原理,尤其是连续性,正态分布比均匀分布更有可能。
  • 那么,你想要正态分布还是均匀分布?这两者完全不同。
  • 我当然想要一个统一的分布。正如你所看到的,我已经得到了一个普通的。 @peachykeen 我在哪里做的?此外,如上所述,根据 Lilliefors 检验,分布不正常。

标签: c# random statistics probability perlin-noise


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 2012-07-14
      • 1970-01-01
      • 2020-02-23
      • 2014-02-15
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多