我知道許多統一的隨機數發生器(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. 隨機數發生器產生相同的隨機數
- 5. 生成沒有零的隨機數
- 6. 生成沒有重複的隨機數
- 7. 生成沒有循環的隨機數
- 8. 生成隨機數
- 9. 隨機數生成
- 10. 生成隨機數
- 11. Haskell的隨機發生器:鏈生成的隨機值
- 12. 有關生成隨機數
- 13. 隨機數發生器
- 14. Vbscipt隨機數發生器
- 15. 隨機數發生器
- 16. Node.js隨機數發生器?
- 17. Erlang - 隨機數發生器
- 18. 隨機數發生器
- 19. 隨機數發生器
- 20. MersenneTwister隨機數發生器
- 21. 隨機數組發生器
- 22. 隨機數發生器,C++
- 23. Verilog隨機數發生器
- 24. 生成一組隨機數
- 25. 隨機數生成機制
- 26. 唯一的隨機整數發生器
- 27. 無偏隨機數發生器使用偏倚的隨機數發生器
- 28. 產生一個隨機數沒有隨機函數
- 29. C++爲psudo隨機數生成器生成一個很好的隨機種子
- 30. 隨機數的生成
爲什麼你想要避免統一分配作爲你的基礎? –
只有存在高斯RNG纔有意思。然後變換從高斯到統一 – Narek
一個古怪的事實是,由於中心極限定理,有可能通過對從幾乎*任意*分佈採樣的幾個(10+)隨機變量求和來獲得高斯分佈的隨機變量。所以當然你不需要使用統一分配作爲基礎。 – kfx