2016-01-21 127 views
1

我知道許多統一的隨機數發生器(RNGs)基於一些算法,物理系統等。最終,所有這些導致均勻分佈的隨機數。知道是否存在高斯RNG,即該算法或其他什麼產生高斯隨機數是有趣和重要的。更確切地說,我想說的是,我不想使用Box-Muller或Marsaglia極座標法等變換來從統一RNG獲取高斯。我感興趣的是,如果有一些論文,算法或甚至想法來創建高斯隨機數而不使用任何統一的RNG。這只是說我們假裝我們不知道存在統一的隨機數發生器。生成沒有統一的隨機數發生器的高斯隨機數

+5

爲什麼你想要避免統一分配作爲你的基礎? –

+1

只有存在高斯RNG纔有意思。然後變換從高斯到統一 – Narek

+0

一個古怪的事實是,由於中心極限定理,有可能通過對從幾乎*任意*分佈採樣的幾個(10+)隨機變量求和來獲得高斯分佈的隨機變量。所以當然你不需要使用統一分配作爲基礎。 – kfx

回答

0

正如其他人已經指出,這有點不清楚你的動機是什麼,因此我不確定以下是否回答你的問題。

儘管如此,如果沒有特定的公式轉換您提到的統一RNG,可以生成(近似)。與任何RNG一樣,我們必須有一些隨機性(或僞隨機性)的來源。因此,我假定存在一些無限序列的二進制位,這些二進制位獨立同等地可能是0或1(注意,有可能反對這是一個統一的離散二進制RNG,所以我不確定這是否回答你的問題)。

選擇一些大的固定n。對於RNG的每次調用,生成Ñ這樣的位,總結它們作爲X,並返回

(2× - 1)/ √Ñ

通過de Moivre–Laplace theorem這是正常的,平均0和方差1.

+0

謝謝。我已經得到了你的答案。所以現在我們可以用相反的方式使用Box-Muller變換來獲得Uniform,對吧? – Narek

+0

@Narek我們已經從統一的0-1範圍開始,你忘記了嗎?您可以更簡單地創建N長均勻範圍 - 將每一位用作數字的下一位。所以,隨機位會給你2^n-1長的均勻範圍。 – Gangnus

+0

@Narek,Gangnus在這裏是正確的。 –

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,看看它是否適合您的目的

+0

在一篇相當近期的論文中(http://arxiv.org/pdf/1004.3114.pdf),RP Brent描述了華萊士PRNG的向量化實現,據稱它比基於Box-Muller的高斯PRNG快得多(在特定的矢量處理器上;我懷疑這些性能特徵是否適用於高性能處理器)。 – njuffa

+0

@njuffa謝謝,很高興知道 –

+0

非常感謝你,這對我來說是新的。 – Narek