close

3162

請問關於蒙地卡羅法

請問一下蒙地卡羅法與均勻切割法這兩者在計算上的差異性是什麼?例如是在什麼情況下用怎樣的方法比較好可以兩個都舉例嗎(我是用Fortran 90寫程式的

但回答方式不限定程式語言 能用Fortran回答最好)
Fortran Compiler 內建的 Library 會提供程式師一個隨機變數(Random Number)產生器

一個優秀的隨機變數產生器應具備以下三項特質:1. 分佈均勻2. 迴歸週期極長3. 雜亂度高(指下一個隨機變數和上一個之間的關係不可預測)若是隨機變數產生器過於陽春

聊備一格

則使用蒙地卡羅法並不能得到良好的結果。

下面的例子說明「蒙地卡羅法」與「均勻切割法」的差異性:《題目一》 甲、乙兩人相約六點至七點間在某地相見

若甲先到會等 15 分鐘

若乙先到會等 10 分鐘

則兩人能見面的機率為何?「均勻切割法」:PROGRAM A1INTEGER*4 I

J

N

N1

N2REAL*8 SN = 10000N1 = INT(FLOAT(N)/60.*15.)N2 = INT(FLOAT(N)/60.*10.)S = 0.DO I = 0

NDO J = 0

NIF (I .LE. J) THENIF (J-I .LE. N1) S = S 1.ELSEIF (I-J .LE. N2) S = S 1.END IFEND DOEND DOPRINT *

N

S/FLOAT(N)/FLOAT(N)END執行結果: 10000 0.371593060000「蒙地卡羅法」:PROGRAM A2REAL*4 N1

N2

T1

T2REAL*8 S

NN1 = 1./60.*15.N2 = 1./60.*10.S = 0.N = 0.1T1 = RANDOM*()T2 = RANDOM*()N = N 1.IF (T1 .LE. T2) THENIF (T2-T1 .LE. N1) S = S 1.ELSEIF (T1-T2 .LE. N2) S = S 1.END IFIF (MOD(INT(N)

10000000) .EQ. 0) PRINT *

INT(SQRT(N))

S/NGOTO 1END執行結果: 3162 0.371365000000 4472 0.371386500000 5477 0.371406066667 6324 0.371474800000 7071 0.371520860000 7745 0.371542566667 8366 0.371551314286 8944 0.371542787500 9486 0.371560733333 10000 0.371560640000(以 CTRL/C 中斷程式執行)「均勻切割法」的優點:當取樣數很大時

可得到相當精確的結果

取樣數的大小無限制。

缺點:取樣數必須事先決定

而且在全部的取樣數計算完成之前

中途的計算結果並不具有參考價值。

「蒙地卡羅法」的優點:取樣數不必事先決定

程式跑愈久結果愈精確

在運算過程中「隨時」輸出計算結果仍具有相當參考價值。

缺點:當取樣數超過隨機變數產生器的「迴歸週期」後

更多的取樣數也不會讓結果更加精確。

(也就是取樣數有一上限值)通常

用「均勻切割法」能解的題目用「蒙地卡羅法」也一定能解。

但是用「蒙地卡羅法」能解的題目用「均勻切割法」卻不一定能解

這也是「蒙地卡羅法」的優勢之一。

例如下面這道題目:《題目二》 有一醉鬼由某一點出發

取任意方向直行 2 公尺

再由該點出發取任意方向直行 2 公尺

‥‥‥ 如此重複 5 次之後

所在位置與原出發點的距離在 3 公尺之內的機率為何?用「蒙地卡羅法」很容易解(就請你自行練習囉)

但是用「均勻切割法」就很難以下手了。

參考資料 自己

蒙地卡羅模擬,蒙地卡羅法,蒙地卡羅模擬法,蒙地卡羅技術,蒙地卡羅分析,淡水蒙地卡羅,蒙地卡羅在哪,蒙地卡羅賭場,蒙地卡羅演算法,蒙地卡羅pub蒙地卡羅,隨機變數,Fortran Compiler,Fortran,MOD,切割,END IF IF,INT,程式語言

VB|VB.net|陣列|檔案|輸出|呼叫|執行檔|原始檔|表單|連結|物件|VBA|運算式|VB6|統計|資料|程式|計數器|OLE|資料庫|欄位|元件|驗證|副程式|程式碼|合併|按鍵精靈|迴圈|巨集|

3162
參考:http://tw.knowledge.yahoo.com/question/question?qid=1509030505038如有不適當的文章於本部落格,請留言給我,將移除本文。謝謝!

arrow
arrow
    創作者介紹
    創作者 3001太空漫遊 的頭像
    3001太空漫遊

    3001太空漫遊

    3001太空漫遊 發表在 痞客邦 留言(0) 人氣()