gpt4 book ai didi

algorithm - 生成均匀分布的随机噪声

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:00 25 4
gpt4 key购买 nike

我一直致力于为 map generator 生成柏林噪声我的。我遇到的问题是随机噪声不是正态分布的,更可能是各种正态分布。

给定两个整数 X 和 Y 以及一个种子值,我执行以下操作:

  • 使用MurmurHash2生成一个随机数 (-1,1)。这是均匀分布的。
  • 使用三次插值法在整数值之间插值点。值现在落在 (-2.25, 2.25) 范围内,因为插值可以在相似值之间外推更高的点(每个维度 1.5),并且分布不再均匀。
  • 生成这些插值点,将它们加在一起,同时将振幅减半(参见:Perling noise)随着总和的数量接近无穷大,范围的极限现在接近先前值的两倍,或 (-4.5, 4.5) 和现在更不统一了。

当我想要 (-1, 1) 的范围时,这显然不起作用,因此我将所有最终值除以 4.5。实际上,我沿途将它们分开(在对每个维度进行插值后除以 1.5,然后在对噪声求和后除以 2。)

除法之后,剩下的理论范围是 (-1, 1)。但是,绝大多数值是 (-0.2,0.2)。这在生成我的 map 时效果不佳,因为我需要确定 map 的填充百分比。我也无法使用直方图来确定要使用的阈值,因为我是按需生成正方形,而不是整个 map 。

我需要在两点使我的分布均匀 - 插值之后和噪声函数求和之后。不过,我不确定该怎么做。

我的分布是这样的:

Normal distribution

我需要它看起来像这样:

Uniform distribution

(两张图片均来自维基百科。)

欢迎任何解决方案,但我是用 C# 编写的,因此代码片段会非常有用。

最佳答案

将生成的样本与高斯分布的 CDF 相结合,即 0.5*erf(x) + 1(erf = 误差函数)。

请注意,根据中心极限定理,无论何时对随机变量求和,都会得到高斯定律。

关于algorithm - 生成均匀分布的随机噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com