Re: [問題] 想要問一個有關於機率的問題

看板Fortran作者 (暱稱)時間15年前 (2009/04/03 11:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《shock0828 (SHOCK)》之銘言: : 老師要我們寫一個程式來模擬離子打入Si基板的問題 : 想問各位大大 : 各個方向(六個方向)的機率與機率跟入射能量還有剩餘能量有關 : 我該怎麼去處理這個問題呢? : 他的假設有三點 : 假設一、P離子射入Si 基板後有六個方向可以運動(三度空間),每次運 : 動前進一個單位 : : 假設二、方向的變換和動量(方向和動能)有關,維持原方向的機率= 1/6 : +(剩餘動能/入射動能)*0.8,反彈的機率=1/6-(剩餘動能/入射動能)*0.1, : 其他方向的機率=(1-(原方向機率+反彈機率))/4 先把3種case的機率算出來 例如 剩餘動能/入射動能 = 0.75 維持原方向的機率 = 1/6 + 0.75*0.8 = 0.76666666 = a1 反彈的機率 = 1/6 - 0.75*0.1 = 0.09166666 = a2 其他方向的機率 = (1 - 0.76666666 - 0.09166666 ) / 4 = 0.035416666 = a3~a6 a1代表向前(維持原方向)的機率 a2代表向後(反方向) a3~a6分別代表轉向其他四個方向的機率 把這些數字加起來做成table b1~b6 b1 = a1 b2 = a1 + a2 ... b6 = a1 + a2 + a3 + ... + a6 = 1 接著產生一個 0~1之間的uniform random number rand 看看數字位於table哪邊 決定前進方向 if ( rand < b1 )then !維持原方向 elseif ( rand < b2 )then !反方向 elseif ( rand < b3 )then !左轉 elseif ( rand < b4 )then !右轉 elseif ( rand < b5 )then !上轉 else !下轉 end if 就是這樣.... : 假設三、能量的損耗正比於行進的距離與轉彎次數,每維持原方向前進一單 : 位損耗1 單位能量,每與原方向相反方向前進一次損耗10 單位能量,每轉 : 彎一次損耗5 單位能量,P 離子在所有能量耗盡時停止。 : -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.18.229
文章代碼(AID): #19rNubvc (Fortran)
文章代碼(AID): #19rNubvc (Fortran)