參考:
https://cosx.org/2015/06/generating-normal-distr-variates/
https://heliosphan.org/zigguratalgorithm/zigguratalgorithm.html
利用中心極限定理生成正態(tài)分布
樣本足夠大時袋哼,樣本均值的分布收斂到正態(tài)分布竹椒。
生成100000個[0,1)隨機數(shù)猾普,每100個一組取平均值泪酱,得到1000個平均值川蒙,服從正態(tài)分布择卦。
效率太低了衫仑,只能玩一玩。
利用逆變換生成正態(tài)分布
知道概率分布函數(shù)的話寒屯,求反函數(shù)荐捻,把均勻分布的隨機變量代入反函數(shù)黍少,就能得到相應的分布。
比如指數(shù)分布的概率分布函數(shù)
处面,其反函數(shù)
具體方法見下節(jié):
Box-Muller算法
x和y是兩個彼此獨立厂置、服從[0,1)均勻分布的隨機變量,則
是兩個彼此獨立魂角、服從正態(tài)分布的隨機變量昵济。
這個應該是自帶函數(shù)的計算方法。
證明方法:利用聯(lián)合概率密度野揪、Jacobian來證明访忿。
更快的:Ziggurat算法
基本思想是“拒絕采樣”。具體內(nèi)容見文章開頭鏈接斯稳。
比直接套逆變換公式要快60%左右海铆。因為逆變換法用到了三角函數(shù)和對數(shù)函數(shù)。