我知道许多统一的随机数发生器(RNGs)基于一些算法,物理系统等。最终,所有这些导致均匀分布的随机数。知道是否存在高斯RNG,即该算法或其他什么产生高斯随机数是有趣和重要的。更确切地说,我想说的是,我不想使用Box-Muller或Marsaglia极坐标法等变换来从统一RNG获取高斯。我感兴趣的是,如果有一些论文,算法或甚至想法来创建高斯随机数而不使用任何统一的RNG。这只是说我们假装我们不知道存在统一的随机数发生器。生成没有统一的随机数发生器的高斯随机数
1
A
回答
0
正如其他人已经指出,这有点不清楚你的动机是什么,因此我不确定以下是否回答你的问题。
尽管如此,如果没有特定的公式转换您提到的统一RNG,可以生成(近似)。与任何RNG一样,我们必须有一些随机性(或伪随机性)的来源。因此,我假定存在一些无限序列的二进制位,这些二进制位独立同等地可能是0或1(注意,有可能反对这是一个统一的离散二进制RNG,所以我不确定这是否回答你的问题)。
选择一些大的固定n。对于RNG的每次调用,生成Ñ这样的位,总结它们作为X,并返回
(2× - 1)/ √Ñ
通过de Moivre–Laplace theorem这是正常的,平均0和方差1.
1
正如答案/评论中指出的那样,凭借CLT,任何iid随机数的一些总和可以变成一些合理的看起来高斯。如果输入流是统一的,这基本上是Bates distribution。 Ami Tavory的答案几乎相当于使用Bates伪装。你可以看看密切相关的Irwin-Hall distribution,并在n=12
或更高,他们看起来很像高斯。
有一种方法在实践中使用并且不依赖于U(0,1) - 华莱士方法的转换(Wallace,CS1996。“Fast Pseudorandom Generators for Normal and Exponential Variates。”ACM Transactions on数学软件。)或高斯池方法。我会建议阅读说明here,看看它是否适合您的目的
相关问题
- 1. 了解统一的随机数生成
- 2. 随机数发生器dev /随机
- 3. 随机数发生器自动随机
- 4. 随机数生成器帮助不生成随机数 - C
- 5. 随机数发生器没有重复
- 6. 随机数发生器产生相同的随机数
- 7. 生成没有循环的随机数
- 8. 生成没有零的随机数
- 9. 生成没有重复的随机数
- 10. 生成随机数:计算随机生成的x次数
- 11. 随机数生成
- 12. 生成随机数
- 13. 生成随机数
- 14. 生成随机数
- 15. 生成随机数
- 16. 随机数生成
- 17. 随机数据生成器
- 18. Python随机数生成器
- 19. 随机数据生成器
- 20. 高效界偏随机数发生器
- 21. Haskell的随机发生器:链生成的随机值
- 22. 有关生成随机数
- 23. Ç随机数发生器
- 24. 伪随机数发生器
- 25. RNG(随机数发生器)
- 26. 随机数发生器
- 27. Node.js随机数发生器?
- 28. 随机数发生器
- 29. 随机数发生器,C++
- 30. 随机数发生器
为什么你想要避免统一分配作为你的基础? –
只有存在高斯RNG才有意思。然后变换从高斯到统一 – Narek
一个古怪的事实是,由于中心极限定理,有可能通过对从几乎*任意*分布采样的几个(10+)随机变量求和来获得高斯分布的随机变量。所以当然你不需要使用统一分配作为基础。 – kfx