為什么我的眼里常含淚水?因為我有一個算法不會。為了節約點眼淚,今天我們就來介紹著名的Box–Muller變換,基於這種變換,我們便可以得到一個從均勻分布中得到正態分布采樣的算法,本文也會詳細解釋其中蘊含的數學原理。
Box–Muller變換最初由 George E. P. Box 與 Mervin E. Muller 在1958年提出。George E. P. Box 是統計學的一代大師,統計學中的很多名詞術語都以他的名字命名。Box 之於統計學的家學淵源相當深厚,他的導師是 統計學開山鼻祖 皮爾遜的兒子,英國統計學家Egon Pearson,同時Box還是統計學的另外一位巨擘級奠基人 費希爾 的女婿。統計學中的名言“all models are wrong, but some are useful”(所有模型都是錯的,但其中一些是有用的)也出自Box之口。
我們在之前的文章(http://blog.csdn.net/baimafujinji/article/details/51407703)中曾經談過,本質上來說,計算機只能生產符合均勻分布的采樣。如果要生成其他分布的采樣,就需要借助一些技巧性的方法,例如我們在前面的文章提到過的逆變換采樣、拒絕采樣以及自適應的拒絕采樣等等。而在眾多的“其他分布”中,正態分布無疑占據着相當重要的地位。下面這個定理,就為我們生成符合正態分布的采樣(隨機數)提供了一種方法,而且這也是很多軟件或者編程語言的庫函數中生成正態分布隨機數時所采樣的方法。
定理(Box-Muller變換):如果隨機變量U1和U2是IID的,且U1,U2 ~Uniform[0, 1],則
Z0和Z1獨立且服從標准正態分布。
如何來證明這個定理呢?這需要用到一些微積分中的知識,首先回憶一下二重積分化為極坐標下累次積分的方法:
假設現在有兩個獨立的標准正態分布 X~N(0,1) 和 Y~N(0,1),由於二者相互獨立,則聯合概率密度函數為
做極坐標變換,則x=Rcosθ,y=Rsinθ,則有
你可以看到這個結果可以看成是兩個概率分布的密度函數的乘積,其中一個可以看成是[0, 2π]上均勻分布,將其轉換為標准均勻分布則有θ ~Unif (0, 2π)=2π U2。
另外一個的密度函數為
則其累計分布函數CDF為
這個CDF函數的反函數可以寫成
根據逆變換采樣的原理,如果我們有個PDF為P(R)的分布,那么對齊CDF的反函數進行均勻采樣所得的樣本分布將符合P(R)的分布,而如果 u 是均勻分布的,那么 U1 = 1-u 也將是均勻分布的,於是用 U1 替換1-u,最后可得
結論得證。最后我們來總結一下利用Box-Muller變換生成符合高斯分布的隨機數的方法:
(本文完)