1. 程式人生 > >正態分佈隨機數的產生

正態分佈隨機數的產生

最近平凡聽到關於正態分佈取樣相關的內容,突然想到一個問題:
到底如何利用正態分佈取樣?
正好近期模式識別課程上也有一個相關的內容,整理了一下查到的資料。

一。柱狀圖估計分佈
假設樣本 x N(u,θ) , 其pdf圖如下:
設想一下如果我們並不是很清楚正態分佈的mean和var,只有一些訓練的資料樣本,該如何估計樣本分佈的引數?
這裡寫圖片描述
【圖片來自南京大學吳建鑫老師的講義】
上圖中的bin就是把資料劃分區間,然後統計每個區間點的個數,然後根據走勢畫出的分佈圖,當然上圖主要是解釋區間太密集導致的過擬合現象,不是這裡討論的重點。
但是從這個圖可以思考一些問題,比如所謂資料服從正態分佈是什麼意思?圖表示的是概率,其實也就是說點落在均值附近的概率比較大。

二。正態分佈隨機數的產生
有一篇部落格寫的蠻清楚的:http://cos.name/2015/06/generating-normal-distr-variates/
解釋了Python中rand函式的實現,產生正態分佈的過程就是:

# When x and y are two variables from [0, 1), uniformly
# distributed, then
#
#    cos(2*pi*x)*sqrt(-2*log(1-y))
#    sin(2*pi*x)*sqrt(-2*log(1-y))
#
# are two *independent* variables with normal distribution

就是Box-Muller演算法。相關的還有Rejection Sampling,其實這個用到的比較多。