Re: [問題] 高斯分佈的亂數

看板Fortran作者 (朱子)時間14年前 (2010/04/02 22:22), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1BjVsOP8 (Fortran)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BjVsOP8 (Fortran)