1. 程式人生 > >正態分佈可以生成均勻分佈嗎?

正態分佈可以生成均勻分佈嗎?

通過演算法生成的隨機數是“偽隨機”的,也就是說,在設定好第一個數之後,後面的數字的序列是確定的,並且經過一個非常大的迴圈會回到第一個數的狀態,然後周而復始。顯然,搖號、抽獎的程式是不能通過偽隨機數來實現的。現實中常常基於某種熱噪聲來實現真正的隨機數。假定某熱噪聲是標準正態分佈,那麼能否將它轉換成(0,1)區間上的均勻分佈______?

忽略測量和計算誤差,可以轉換為(0,1)區間上的均勻分佈

無法轉換為(0,1)區間上的均勻分佈 資訊不足,無法判斷 藉助偽隨機數生成演算法可以轉換為(0,1)區間上的均勻分佈 僅僅靠偽隨機數生成演算法,就可以生成(0,1)區間上的均勻分佈 以上說法都不對

答案: A

方法1:

生成兩個獨立的正太分佈變數Z0,Z1,然後arctan(z0/z1)/(2pi)+0.5,可以生成0-1均勻分佈的變數

arctan(z0/z1)的最大值為pi,最小值為-pi

其實不用計算:熟知生成二維標準正態分佈的方法就是取兩個獨立的標準正態分佈變數X和Y放在一起(X, Y)就行了,然後二維標準正態分佈在直角座標系裡有各向同性,也就是(X, Y)這個點所指的方向和X軸(或者任何一個給定方向)的夾角是均勻分佈的。

方法2:

X 服從正態分佈,則 Y=\Phi(X) 服從[0,1]間的均勻分佈,其中\Phi是正態分佈函式的cumulative distribution function。 

對於任何的隨機變數,如果已知其分佈,均可以生產均勻分佈。
設隨機變數為X

, 累積分佈為F_X.因為隨機變數的函式也是隨機變數,所以F_X(X)也是隨機變數。現在來求其分佈,P\{F_X(X) \leq a\} = P\{X \leq F^{-1}_X(a)\}=F_X(F^{-1}_X(a))=a,考慮到累積函式的值域,其為[0, 1]上的均勻分佈。  

其實這個是利用了 sklar‘s 定理 的引理(Inverse Sampling Theorem) 只需利用正態分佈函式的CDF,以及滿足正態分佈的隨機變數X,即可生成一個滿足均勻分佈的隨機變數。
方法如下:(就假設最簡單的標準正態分佈的情形)
設標準正態分佈函式的CDF為F(x),隨機變數X服從標準正態分佈
那麼 定義 隨機變數 Y=F(X), Y即服從[0,1]上的均勻分佈