【答案】用蒙特卡洛方法求解圓周率:上面已經知道了蒙特卡洛應用的今本思想以及圓周率求解的基本原理與方法,那么我們用蒙特卡洛方法求解圓周率,從0到2之間任意取一組數,這一組數的每個元素包含兩個變量x和y,x代表所取點的橫坐標,y代表所取點的縱坐標,x和y由計算機隨機抽取,然后編輯公式篩選符合條件的點,篩選條件為,x和y都被包含在圓內。然后設定一個計數器m,每當有一個點符合條件,則m加1,如此一直循環到取夠所設定的點數,然后用m值除以設定的點數,得到一個值,然后再乘以4,這時得到的值就是圓的面積,然后用得到的這個面積除以半徑的平方(因為設定的圓的半徑為1,所以具體操作時不再考慮,得到的圓的面積直接就是圓周率的值) 說明:本例中先取0到20000之間的隨機數,然后再用這些點除以π的計算:第一個例子是,如何用蒙特卡羅方法計算圓周率π。正方形內部有一個相切的圓,它們的面積之比是π/4。 現在,在這個正方形內部,隨機產生10000個點(即10000個坐標對(x,y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。如果這些點均勻分布,那么圓內的點應該占到所有點的π/4,因此將這個比值乘以4,就是π的值。通過R語言腳本隨機模擬30000個點,π的估算值與真實值相差0.07%。以上算法用python實現。源代碼:#!/usr/bin/env python#-*-coding:utf-8-*-from random import randomfrom math import sqrttotal=10000x=y=inn=out=0.0for i in range(total):x=random( )y=random( ) #print(x,y)if (i% (total/10)==0):print(i)if (sqrt(x*x+y*y)<1.0):inn+=1.0else:out+=1.0print(total,inn,out)print(inn*4/total)通過修改total的值來實現隨機概率事件。計算結果:當total=10000時,計算的結果為3.15當total=100000時,計算的結果為3.14528當total=1000000時,計算的結果為3.141228 當total=10000000時,計算的結果為3.141518當total=100000000時,計算的結果為3.14186572當total=1000000000時,計算的結果為3.14166922結論:可見,隨著隨機概率事件次數越大,圓周率的數值就越精確。