利用均勻分布生成其他分布隨機數、蒙特卡羅方法原理


有時候需要利用計算機生成指定連續分布的隨機數,比如指數分布、正態分布、伽馬分布等,一般我們會用相同數量的[0,1]之間均勻分布的隨機數去生成其他形式連續分布隨機量。本篇適用於連續的概率分布函數,並不適合於生成離散分布的隨機數,首先介紹並證明並以下定理。

      一、定理:有連續隨機變量x,x的累積分布函數y=F(x)也是連續函數,那么函數值y也是一個隨機變量,且y是均勻分布。

     1.1 定理證明

      這個定理讀起來非常拗口,其實用大白話說就是y=F(x)是隨機變量x的分布函數,學過概率論的都應該知道分布函數肯定是一個遞增函數,分布函數一般都如下圖所示:

分布函數.png

定理要求這個分布函數還得連續,滿足這個條件后,這個分布函數的值y也是一個隨機變量,並且y是[0,1]之間均勻分布的隨機變量,證明如下:

Untitled-1.jpg

這個定理告訴我們,因為這個分布函數是連續、單調遞增的,那么其反函數x=F-1(y)也一定是連續、單調遞增的,這就保證了[0,1]之間均勻的隨機數y與目標連續分布的隨機數x存在一一對應的關系。比如需要生成10個λ=0.5的指數分布隨機數時,只要先生成10個[0,1]之間均勻分布的隨機數y1,y2,y3...y10,然后利用其分布函數的反函數:

g2222if.gif

ln1.gif

就能依次生成10個指數分布隨機數: x1,x2,x3...x10。

    1.2 蒙特卡羅法

    定理說明了一個均勻隨機分布隨機變量與另一個分布隨機變量的一一對應關系,是一種函數關系,所謂一一對應關系數學上稱為映射,具體說是一種雙射(單射且滿射),以上的定理運用了一個[0,1]之間均勻分布變量y一一對應於隨機變量x,這樣一來就可以生成了一系列目標分布的隨機變量,y在這里其實代表了一個概率(概率不就是一個0,1之間的數值嗎?),一個分布函數上的具體值。需要強調,並不是說隨機變量等於x時的概率是y,由分布函數定義知連續分布單點概率值都是0,連續概率是指隨機變量X(大寫)小於等於x的概率是y,可表達為:P(X<=x)=F(x)=y,所以定理中要求分布函數實際上是一個累積分布函數。理解以上內容后我們來介紹蒙特卡羅法的一個應用---利用蒙特卡羅法計算積分值。

fx.jpg

上面的函數f(x)的定義域是[0,1],值域也是[0,1],f(x)無法通過換元法和分部積分法等傳統方法求積分時,可利用以上定理來實現,可以通過生成一系列隨機變量並求其分布的概率,最后得出的概率就是積分值。

蒙特卡羅法.png

      在具體應用時,定義域和值域可能不在[0,1]之間,但不妨礙我們使用蒙特卡羅法,利用換元法分別構造三個概率密度函數p(x,y)、pX(x)、pY(y)后,就可以像本例一樣使用蒙特卡羅法。蒙特卡羅法也是定理一的具體應用:先生成多個二維隨機變量(xi,yi),然后利用二維均勻分布求出概率(yi≤f(xi)的概率),這個概率值即為目標函數積分值;而之前生成隨機數的例子中則是生成一系列均勻分布概率值,然后利用這些概率值結合反函數生成隨機數。 

     二、生成正態分布隨機數

    由於正態分布在統計學的重要性和普遍性,實踐中經常需要生成特定數學期望和方差的正態分布隨機數列,這時當然可以使用上述定理來實現,但由於正態分布函數其定義是一個積分形式,求反函數難度較大,只能通過數值計算得出一個近似正態分布函數,其效果不會很理想。幸運的是,我們可以利用中心極限定理去生成正態分布隨機數。 

余下文章請轉至鏈接:蒙特卡羅方法原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM