【问题标题】:Generating Gaussian Random Numbers without a Uniform Random Number Generator在没有统一随机数生成器的情况下生成高斯随机数
【发布时间】:2016-01-22 01:59:59
【问题描述】:

我知道许多基于一些算法、物理系统等的统一随机数生成器 (RNG)。最终,所有这些都会导致均匀分布的随机数。知道是否存在高斯 RNG 是有趣且重要的,即算法或其他东西会创建高斯随机数。确切地说,我不想使用诸如 Box–Muller 或 Marsaglia 极坐标法之类的变换来从 Uniform RNG 中获取高斯。如果有一些论文、算法甚至想法可以在不使用任何统一 RNG 的情况下创建高斯随机数,我很感兴趣。这只是说我们假装我们不知道存在统一随机数生成器。

【问题讨论】:

  • 您为什么想要避免将统一分布作为您的基础?
  • 如果只存在高斯RNG,那就太有趣了。然后变换从高斯到均匀
  • 一个奇怪的事实是,由于中心极限定理,可以通过对从几乎 any 中采样的几个 (10+) 随机变量求和来获得高斯分布的随机变量分配。所以可以肯定的是,你不需要使用均匀分布作为基础。
  • 我可以想象使用所需的算法 - 如果我们想对真实测量进行建模,我们也必须对误差进行建模,并且它们总是高斯的。这部分会占用大量时间。

标签: algorithm random gaussian


【解决方案1】:

正如在答案/cmets 中已经指出的那样,借助 CLT,任何 iid 随机数的一些总和都可以变成一些看起来合理的高斯。如果传入流是统一的,这基本上是Bates distribution。 Ami Tavory 的回答几乎等同于变相使用贝茨。您可以查看密切相关的Irwin-Hall distribution,在n=12 或更高版本中,它们看起来很像高斯。

在实践中有一种方法不依赖于 U(0,1) 的变换 - Wallace 方法(Wallace, C. S. 1996.“Fast Pseudorandom Generators for Normal and Exponential Variates。”ACM Transactions on Mathematical软件。),或高斯池方法。我建议阅读描述 here 看看它是否符合您的目的

【讨论】:

  • 在最近的paper 中,R. P. Brent 描述了 Wallace PRNG 的矢量化实现,据称它比基于 Box-Muller 的高斯 PRNG 快得多(在特定的矢量处理器上;我我怀疑这些性能特征是否普遍适用于高性能处理器)。
  • 非常感谢,这对我来说是新的。
  • 为什么人们倾向于创建 U(0,1)?我知道一些原因 1) 高维 MC 集成 2) 模拟 3) 轻松转换到具有不同分布的其他 RNG 4) 游戏等等.. 为什么人们不考虑创建高斯 RNG 并使用它,即使需要转换为统一 RNG。也许创建高斯RNG很容易
【解决方案2】:

正如其他人所指出的,您这样做的动机有点不清楚,因此我不确定以下内容是否能回答您的问题。

尽管如此,在没有您提到的转换统一 RNG 的特定公式的情况下,也可以生成(近似)这个。

与任何 RNG 一样,我们必须有一些随机性(或伪随机性)来源。因此,我假设存在一些无限的二进制位序列,它们独立地同样可能为 0 或 1(请注意,可以反驳说这是一个统一的离散二进制 RNG,所以我不确定这是否回答你的问题)。

选择一些大的固定n。对于 RNG 的每次调用,生成 n 个这样的位,将它们相加为 x,并返回

(2 x - 1) / √n

de Moivre–Laplace theorem 这是正常的,均值为 0,方差为 1。

【讨论】:

  • 谢谢。我有你的答案。所以现在我们可以用相反的方式使用 Box-Muller 变换来得到 Uniform,对吧?
  • @Narek 我们已经从统一的 0-1 范围开始了,你忘记了吗?您可以更简单地创建 N 长统一范围 - 将每一位用作数字的下一位。因此,n 个随机位将为您提供 2^n-1 长的均匀范围。
猜你喜欢
  • 2011-09-18
  • 2014-04-15
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
相关资源
最近更新 更多