蒙地卡羅方法

蒙特卡羅方法（Monte Carlo method），也稱統計模擬方法，是1940年代中期由於科學技術的發展和電子計算機的發明，而提出的一種以概率統計理論為指導的數值計算方法。是指使用隨機數（或更常見的偽隨機數）來解決很多計算問題的方法。
20世紀40年代，在科學家馮·諾伊曼、斯塔尼斯拉夫·烏拉姆和尼古拉斯·梅特羅波利斯於洛斯阿拉莫斯國家實驗室為核武器計劃工作時，發明了蒙特卡羅方法。因為烏拉姆的叔叔經常在摩納哥的蒙特卡洛賭場輸錢得名，而蒙特卡羅方法正是以概率為基礎的方法。
與它對應的是確定性算法。
蒙特卡羅方法在金融工程學、宏觀經濟學、生物醫學、計算物理學（如粒子輸運計算、量子熱力學計算、空氣動力學計算）、機器學習等領域應用廣泛。

**基本概念**
通常蒙特卡羅方法可以粗略地分成兩類：一類是所求解的問題本身具有內在的隨機性，藉助計算機的運算能力可以直接模擬這種隨機的過程。例如在核物理研究中，分析中子在反應堆中的傳輸過程。中子與原子核作用受到量子力學規律的制約，人們只能知道它們相互作用發生的概率，卻無法準確獲得中子與原子核作用時的位置以及裂變產生的新中子的行進速率和方向。科學家依據其概率進行隨機抽樣得到裂變位置、速度和方向，這樣模擬大量中子的行為後，經過統計就能獲得中子傳輸的範圍，作為反應堆設計的依據。
另一種類型是所求解問題可以轉化為某種隨機分佈的特徵數，比如隨機事件出現的概率，或者隨機變量的期望值。通過隨機抽樣的方法，以隨機事件出現的頻率估計其概率，或者以抽樣的數字特徵估算隨機變量的數字特徵，並將其作為問題的解。這種方法多用於求解複雜的多維積分問題。
假設我們要計算一個不規則圖形的面積，那麼圖形的不規則程度和分析性計算（比如，積分）的複雜程度是成正比的。蒙特卡羅方法基於這樣的想法：假設你有一袋豆子，把豆子均勻地朝這個圖形上撒，然後數這個圖形之中有多少顆豆子，這個豆子的數目就是圖形的面積。當你的豆子越小，撒的越多的時候，結果就越精確。藉助計算機程序可以生成大量均勻分佈座標點，然後統計出圖形內的點數，透過它們佔總點數的比例和座標點生成範圍的面積就可以求出圖形面積。

**工作過程**
使用蒙特卡羅方法估算π值. 放置30000個隨機點後,π的估算值與真實值相差0.07%.
在解決實際問題的時候應用蒙特卡羅方法主要有兩部分工作：
#用蒙特卡羅方法模擬某一過程時，需要產生各種概率分佈的隨機變量。
#用統計方法把模型的數字特徵估計出來，從而得到實際問題的數值解。

**分子模擬計算的步驟**
使用蒙特卡羅方法進行分子模擬計算是按照以下步驟進行的：
#使用隨機數生成器產生一個隨機的分子構型。
#對此分子構型的其中粒子座標做無規則的改變，產生一個新的分子構型。
#計算新的分子構型的能量。
#比較新的分子構型與改變前的分子構型的能量變化，判斷是否接受該構型。
#*若新的分子構型能量低於原分子構型的能量，則接受新的構型，使用這個構型重複再做下一次迭代。
#*若新的分子構型能量高於原分子構型的能量，則計算玻爾茲曼因子，併產生一個隨機數。
#**若這個隨機數大於所計算出的玻爾茲曼因子，則放棄這個構型，重新計算。
#**若這個隨機數小於所計算出的玻爾茲曼因子，則接受這個構型，使用這個構型重複再做下一次迭代。
#如此進行迭代計算，直至最後搜索出低於所給能量條件的分子構型結束。

**在數學中的應用**
通常蒙特卡羅方法透過構造符合一定規則的隨機數來解決數學上的各種問題。對於那些由於計算過於複雜而難以得到解析解或者根本沒有解析解的問題，蒙特卡羅方法是一種有效的求出數值解的方法。一般蒙特卡羅方法在數學中最常見的應用就是蒙特卡羅積分。下面是蒙特卡羅方法的兩個簡單應用：

**積分**
非權重蒙特卡羅積分，也稱確定性抽樣，是對被積函數變量區間進行隨機均勻抽樣，然後對抽樣點的函數值求平均，從而可以得到函數積分的近似值。此種方法的正確性是基於概率論的中心極限定理。當抽樣點數為m時，使用此種方法所得近似解的統計誤差只與m有關（與正相關），不隨積分維數的改變而改變。因此當積分維度較高時，蒙特卡羅方法相對於其他數值解法更優。

**圓周率**
蒙特卡羅方法可用於近似計算圓周率：讓計算機每次隨機生成兩個0到1之間的數，看以這兩個實數為橫縱座標的點是否在單位圓內。生成一系列隨機點，統計單位圓內的點數與總點數，（圓面積和正方形面積之比為PI:4，PI為圓周率），當隨機點取得越多時，其結果越接近於圓周率（然而準確度仍有爭議：即使取10的9次方個隨機點時，其結果也僅在前4位與圓周率吻合，以下Python程式碼可提供測試）。用蒙特卡羅方法近似計算圓周率的先天不足是：計算機產生的隨機數是受到存儲格式的限制的，是離散的，並不能產生連續的任意實數；上述做法將平面分割成一個個網格，在空間也不是連續的，由此計算出來的面積當然與圓或多或少有差距。
import numpy as np
# 生成10的9次方個隨機點
num_points = 10**9
points = np.random.rand(num_points, 2)
# 計算點到原點的距離
distances = np.sqrt(points:,0**2 + points:,1**2)
# 計算落在單位圓內的點的數量
points_inside_circle = np.sum(distances 

**在機器學習中的應用**
蒙特卡洛方法也常用於機器學習，特別是強化學習的算法中。一般情況下，針對得到的樣本數據集建立相對模糊的模型，透過蒙特卡洛方法對於模型中的參數進行選取，使之於原始數據的殘差儘可能的小。從而達到建立模型擬合樣本的目的。

**參見**
 遺傳算法- 粒子濾波器- 擬蒙特卡羅方法

**註釋**

**參考**
 dead-url=yes 
*cite journal |last1=Benov |first1=Dobriyan M. |title=The Manhattan Project, the first electronic computer and the Monte Carlo method |journal=Monte Carlo Methods and Applications |volume=22 |issue=1 |pages=73–79 |year=2016 |url=https://www.degruyter.com/view/j/mcma.2016.22.issue-1/mcma-2016-0102/mcma-2016-0102.xml |ref=harvnb |doi=10.1515/mcma-2016-0102 |access-date=2018-04-29 |archive-date=2019-06-03 |archive-url=https://web.archive.org/web/20190603224629/https://www.degruyter.com/view/j/mcma.2016.22.issue-1/mcma-2016-0102/mcma-2016-0102.xml - ref=harvnb- ref=harvnb- ref=harvnb- ref=harvnb
*year=1992 - ref=harvnb
*dead-url= yes - ref=harvnb
*bibcode = 2010PMB....55.5213F 
*Cite journal|first= Leslie M.|last= Golden|title= The Effect of Surface Roughness on the Transmission of Microwave Radiation Through a Planetary Surface |journal=伊卡洛斯 (期刊)|volume= 38|year= 1979| pages=451–455|ref=harvnb|bibcode = 1979Icar...38..451G |doi = 10.1016/0019-1035(79)90199-4|issue= 3 - ref=harvnb
*Cite book |first=Charles|last=Grinstead|first2= J. Laurie|last2=Snell |title=Introduction to Probability| pages= 10–11|publisher=美國數學學會|year= 1997 | ref=harvnb- ref=harvnb
*dead-url=yes
*cite book|first=Douglas |last=Hubbard |title=How to Measure Anything: Finding the Value of Intangibles in Business |url=https://archive.org/details/howtomeasureanyt00hubb_079 | page=  46 |publisher=John Wiley & Sons |  year= 2007 | ref=harvnb
*cite book|first=Douglas |last=Hubbard  
publisher= John Wiley & Sons |year=2009 | ref=harvnb- ref=harvnb
*cite book|first=Malvin H.|last=Kalos|first2=Paula A.|last2=Whitlock|title=Monte Carlo  Methods| publisher=Wiley-VCH|year=2008|isbn=978-3-527-40760-6|ref=harvnb
*Cite book |title=Handbook of Monte Carlo Methods|last=Kroese |first=D. P. |authorlink= |last2=Taimre|first2=T.|last3=Botev|first3=Z.I. |year=2011 |publisher=John Wiley & Sons |location=New York |isbn=0-470-17793-4 |page=772 |url=http://www.montecarlohandbook.org | ref=harvnb
*Cite journal|first= H. T.|last= MacGillivray|first2= R. J.|last2= Dodd|title= Monte-Carlo simulations of galaxy systems|journal= Astrophysics and Space Science|volume= 86|issue= 2|year= 1982|publisher= 施普林格科學+商業媒體|url= http://www.springerlink.com/content/rp3g1q05j176r108/fulltext.pdf|ref= harvnb- ref=harvnb- ref=harvnb
*Cite journal |last=Metropolis |first=Nicholas |authorlink=Nicholas Metropolis |last2=Rosenbluth|first2=Arianna W.|last3=Rosenbluth|first3=Marshall N.|last4=Teller|first4=Augusta H.|last5=Teller|first5=Edward |year=1953 |title=Equation of State Calculations by Fast Computing Machines |journal=Journal of Chemical Physics |volume=21 |issue=6 |page=1087 |doi=10.1063/1.1699114 |url= |quote=  
bibcode = 1953JChPh..21.1087M 
*jstor=2280232- ref=harvnb
*archive-url=https://web.archive.org/web/20210310023658/http://www.math.pitt.edu/~cbsg/Materials/MonteCarlo_latex.pdf 
*bibcode = 2009BpJ....96.1076O - ref=harvnb- ref=harvnb
*cite book |last1=Press |first1= William H.|authorlink1= |last2= Teukolsky|first2=Saul A. |last3= Vetterling|first3=William T. |last4= Flannery|first4=Brian P. |title= Numerical Recipes in Fortran 77: The Art of Scientific Computing |edition= Second |series= Fortran Numerical Recipes|volume= 1 |year=1996 |origyear= 1986|publisher= 劍橋大學出版社|isbn=0-521-43064-X |ref=harvnb
*Cite book| last=Ripley|first=B. D.|title=Stochastic Simulation|publisher = 約翰威立|year=1987- ref=harvnb- ref=harvnb
*issue= 1- ref=harvnb
*cite journal |last1=Sawilowsky |first1=Shlomo S. |title=You think you've got trivials? |journal=Journal of Modern Applied Statistical Methods |volume=2 |issue=1 |pages=218–225 |year=2003 |url=http://education.wayne.edu/jmasm/sawilowsky_effect_size_debate.pdf |ref=harvnb - archive-url =https://web.archive.org/web/20120525143936/http://books.nips.cc/papers/files/nips23/NIPS2010_0740.pdf 
*isbn=978-3-8364-7919-6
*archive-url=https://web.archive.org/web/20210225021101/http://www.ipgp.jussieu.fr/~tarantola/Files/Professional/SIAM/index.html 
*Cite book|first=David |last=Vose |title=Risk Analysis, A Quantitative Guide|edition=Third|publisher=John Wiley & Sons|year= 2008 | ref=harvnb