Re: [問題] 高斯分佈的亂數
※ 引述《MichaelKiske (Dr. Stein..............)》之銘言:
: 目前在寫一個程式需要用到高斯分佈的亂數,變異數為1,平均值為0。
: google了一下發現有各種算式但是怎麼弄都不對= =
: 假設我的程式如下,g=那行到底要用啥算式來做轉換哩…
: real x, g
: call RANDOM_SEED()
: do i=1, 100
: call RANDOM_NUMBER(x)
: g =
: end do
real x, y, g
call RANDOM_SEED()
do i=1, 100
call RANDOM_NUMBER(x)
call RANDOM_NUMBER(y)
g = sqrt(-2*log(x))*cos(y*3.14159)
end do
參考
http://www.taygeta.com/random/gaussian.html
http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform
: 我google到發現有兩種,一種是
: g = sqrt(1/(2*3.14159))*exp(-(x**2)/2)
: 但是生不出負值…
: 另一種是
: g = sqrt(-2*log(x))*cos(x*3.14159)
: 但這行產出來的值又超過正負1的範圍orz
: 請教各位大大啦~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.213.158
※ 編輯: mantour 來自: 140.112.213.158 (04/02 22:22)
推
04/10 11:55, , 1F
04/10 11:55, 1F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章