问题标签 [noise-generator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1558 浏览

actionscript-3 - 在 Flash 10 中模拟引擎噪音

我正在开发一个 Flash 中的“复古”摩托车游戏,类似于大型驱动器上的 Road rash 系列,在玩了很长时间后,我无法找到“正确”的方式来产生噪音。

我一直在尝试根据转速基本上改变正弦波上的频率,因此随着转速的增加,频率也会增加 - 它有点工作但听起来不像真正的引擎(我已经有一段时间骑自行车了我每天骑自行车上班,所以我“知道”它应该听起来像什么:-p)。

我不太追求逼真的声音,只是听起来“不错”,或者足够好,以至于大多数玩游戏的人都不会注意到并且很高兴声音实际上与转速和速度有关,而只是一个平面mp3。

我似乎无法在谷歌上搜索,因为我找不到合适的词,“引擎”只是用游戏引擎稀释了所有结果,什么不是。

我发现的大多数文章也建议使用抽样——但这有两个主要问题:

  • 即使我有一辆自行车并且可以录制声音;记录 rpm 的样本 - 如果我以 1000 个间隔进行采样(我的 gsxr 一直旋转到 16k :-p),比如 15 个,那么我还必须在各种负载下对每个样本进行采样,即 0mph、10mph、20mph、30mph , 40mph,因为发动机噪音因负载而异——总共有 80 个样本——尽管我不确定是否可以在 rpm 样本之上以某种方式模拟负载?
  • 所有这些样本加起来就是必须在播放之前下载的字节数。
0 投票
1 回答
4777 浏览

matlab - matlab中的广义高斯噪声发生器

我需要在 Matlab 中创建广义高斯噪声发生器。

vGGN 是如下分布的随机信号:

其中 p 是计算值 v 的概率。

请注意,这gamma是内置于计算Gamma 函数值的 Matlab 函数

我试图通过以下方式创建生成器:

但是循环似乎是无限的,出了点问题。

另请注意,对于:
beta = 2此生成器应返回等于具有平均值mi和标准偏差的正态高斯分布的值alfa^2/2

编辑 好的,Doug 为我指出了正确的方向。我们需要创建v或多或少可能被选中的值(我假设 10* std 非常好),然后检查概率条件。为每个概率检查(在 while 循环中)
绘制一个新值也很重要。 所以问题解决了prob

请注意,此生成器允许您生成:
- 高斯噪声beta = 2 - 拉普拉斯(脉冲)噪声beta = 1

0 投票
2 回答
3801 浏览

noise - 好的柏林噪声资源/实现?

那里有详细介绍 Perlin 噪声生成的好资源吗?我知道大多数语言都有可用的噪音生成库,但我有兴趣创建自己的有趣/体验。我已经看过这个,它看起来很流行,但它只对一维噪声进行了深入的解释。到目前为止,谷歌搜索相对没有帮助,因为它们中的大多数都专注于应用程序而不是如何创建生成器。

欢迎书籍和/或网站,即使它们的重点不是生成本身,只要它对实现进行彻底解释,或者至少提供所涉及的概念,以便我可以“发现”我自己的。

0 投票
2 回答
4117 浏览

r - 如何在 R 中模拟粉红噪声

我知道可以通过将输出rnorm()视为时间序列来实现白噪声。关于如何模拟粉红噪声的任何建议?

0 投票
1 回答
328 浏览

string - 在文本中添加一些噪音

我想知道是否有任何已知的算法/策略可以向文本字符串添加一些噪声(例如,不时添加随机字符序列或类似的东西)。

我不想仅仅为了让它稍微无法使用而完全破坏文本。此外,我对撤消更改不感兴趣,如果需要,我可以从最初用于创建它的源中重新创建原始文本。

当然,一个非常基本的算法可以很容易地实现,但可能有人已经为此创建了一个有点复杂的算法。如果这样的 Java 实现可用就更好了。

0 投票
1 回答
901 浏览

random - 具有随机访问的种子 3D 白噪声随机发生器

我对随机生成器的经验几乎为零。我在 C 中使用了标准 rand 函数,并且使用了 perlin 噪声。

但是现在,我需要一个分辨率为 NxNxN 的立方体(N 可能为 1e6 或更大),其中充满白噪声(没有柏林平滑度或其他),我可以在其中“选择”一个值,如果我重新选择相同的值,它应该是每次都一样的结果。它应该被播种,这样如果我再次启动应用程序,结果需要相同。它不应该是安全的或其他什么,只是足够随机,以至于人类不应该能够通过思考来预测值。如果他真的用电脑分析,可以预见也无妨。

就像我会使用标准的 C rand 函数,设置种子并为 3 维执行嵌套 for 循环,并每次生成一个随机数,直到我到达坐标。这当然非常慢。我需要一些快速的东西!

我在互联网上搜索过,发现很多,但同时什么也没有。也许我正在寻找错误的关键字,但我没有找到任何可以使用的东西。

谁能帮我开始?代码?一条链接?我真的不在乎我是否理解算法,但它应该易于实现和使用,并且应该特别快。

0 投票
1 回答
369 浏览

random - 世界一代噪音概念

所以,我一直在做我的游戏,但我遇到了一些死胡同。我不明白世界生成中噪声的概念。

很久以前,我尝试通过对 500x500 图像进行编码并告诉程序“如果 * 这种像素接近,你有 % 的机会复制它”来制作自己的“地图生成器”。

然而,结果非常丑陋,所以我正在努力为我的世界一代寻找更好的替代品。

现在我希望我的世界生成只支持 2D,只有 3 个瓷砖的平面景观。然而,无论我使用什么“噪音”生成器,我都希望能够添加超过 12 个不同的生物群落、80 个图块等,并且拥有更多 3D 的地图,因为它也会有山丘等(尽管它用于 2D 游戏)。

所以,我几乎试图理解地图的“受控”噪声生成的概念,以便我可以创建自己的生成器。

我研究了许多 Perlin 噪声生成器的来源,但我不能完全理解程序似乎在做的所有复杂数学背后发生了什么。

所以,我的问题是,受控噪声生成背后的想法是什么?大多数程序实际上在做什么,我应该尝试复制并变形为我自己的?

0 投票
1 回答
89 浏览

java - 拆分一个类是为了更容易测试可接受的行为吗?

我知道这是一个主观问题,但我找不到答案。不过,我会提供详细信息:

我有一个类有很多配置方法,这样你就可以运行具有非常不同设置的特定算法。正确配置后,您只需调用一个方法“generate()”,它就会返回一个填充的二维数组。这是很难测试的方法。这很难,因为它返回一个高度图,其中包含随机性和大量数据。一般来说,我会拆分它,但这会破坏封装,因为实际上数据和算法的步骤会出于同样的原因发生变化,没有人会使用一个与另一个分开的。我知道我可以模拟随机性(我实际上正在这样做),但无论哪种方式,编写测试的数据都太多了(例如,仅 32 x 32 的映射将需要在单个测试中进行 1024 个断言) . 除此之外,生成一张大地图可能需要 3 或 4 秒,这在测试环境中显然不是很好。

此外,我首先尝试将数据与算法分开,并使算法成为纯函数式(没有数据,只有参数)。虽然这是可测试的(因为我拆分了算法),但这会导致大量参数被四处传递,并且代码看起来相当程序化。

所以我不确定如何在这里进行。拆分类使测试和理解更容易,但也破坏了封装非常糟糕。我将不胜感激有关该主题的任何想法,无论是实际的还是理论上的。

提前致谢。

编辑:这是我编写的代码,类似于程序。

JavaRandom、Attenuation 和 RandomNumberProcessor 是我应该放在一起的类。

这是算法使用的数据:

}

这是算法的主体:

}

这是算法的其他步骤:

}

}

0 投票
2 回答
1156 浏览

android - 程序每次执行都会生成相同的“随机”数

我正在尝试使用 c4droid IDE 为 Android 终端编写一个带有随机生成世界的简单 ASCII 风格游戏。它具有 C++ 支持,基本上我正在array[width][height]使用规则rand()%2 - 1生成瓷砖,创建可行走的瓷砖,0是墙壁。但是有问题。每次我“随机”生成地图时,它看起来都是一样的——因为rand()并不是真正随机的。我听说过使用 HDD 或其他部件创建的熵。问题是我在 android 上使用它,所以我实现起来很奇怪,因为 C++ 不像 Java 那样被使用,所以我在谷歌上找不到解决方案。这么短的问题:如何在 android 上使用 c++ 生成“非常真实”的随机数?

0 投票
1 回答
508 浏览

random - 种子伪随机数生成器

我正在开发一个基于种子整数和其他两个整数的 Perlin 噪声生成器:x 和 y。

到目前为止,伪随机数生成器如下所示:

但是这种实现存在一些问题:首先,返回间隔不是恒定的(理想情况下,我想使用 [-1, 1] 或 [0, 1]),对于负 x 和 y 值,图案变得块状,看起来一点也不有机。有没有办法改变我的公式(或者可能是一个全新的公式)来满足我的需要?