利用蒙特卡洛演算法求圓周率

2021-08-25 18:58:52 字數 1872 閱讀 4200

from :

背景知識:

蒙特卡洛是摩納哥公國第一大城市,與澳門、美國拉斯維加斯並稱世界三大賭城。位於地中海沿岸,首都摩納哥之北,建於阿爾卑斯山脈突出地中海的懸崖之上。景色優美,是地中海地區旅遊勝地。市內置有豪華的旅館、俱樂部、歌劇院、商店、游泳池、溫泉浴室、運動場等娛樂設施 。城內開設有蒙特卡洛大賭場。賭場建於 1865

年,為雙層樓建築,上有鐘樓、塔廳和拱形亭閣,還飾以若干人物雕塑,庭前棕櫚樹成行,還闢有花園,旁邊有大酒店和酒吧間。整個城市在旺季時,約有賭場 70

多個,約有賭室 3500

間左右。蒙特卡羅賭場由國家經營。當地的其他活動,許多也帶有色彩。遊客住的旅店房間,有**的號碼,中獎的免付部分房費。早餐的牛奶麥片粥裡,如遇上金屬牌子 ,亦可領獎。該城只有 1

萬人口,但每天報紙銷量可達 100

萬份 ,因為報紙上都印有可能得獎的號碼。遊客最後離境,購買的車票上也印有彩票號碼,於離境前開彩。經營賭業是摩納哥的主要經濟**,每年都從賭業中收取高額外匯利潤。

蒙特卡洛演算法簡單描述:

以 概率和統計理論方法為基礎的一種計算方法。將所求解的問題同一定的概率模型相聯絡,用計算機實現統計模擬或抽樣,以獲得問題的近似解。比如,給定 x=a

,和 x=b

,你要求某一曲線 f

和這兩豎線,及 x

軸圍成的面積,你可以起定 y

軸一橫線 y=c

其中 c>=f(a) and c>=f(b)

,很簡單的,你可以求出 y=c,x=a,x=b,

及 x軸圍成的矩形面積,然後利用隨機參生生大量在這個矩形範圍之類的點,統計出現在曲線上部點數和出現在曲線下部點的數目,記為: doteupcount,nodedowncount,

然後所要求的面積可以近似為 dotedowncounts

所佔比例 *

矩形面積。

問題描述:

在數值積分法中,利用求單位圓的 1/4

的面積來求得 pi/4

從而得到 pi

。單位圓的 1/4

面積是乙個扇形,它是邊長為 1

單位正方形的一部分。只要能求出扇形面積 s1

在正方形面積 s

中佔的比例 k=s1/s

就立即能得到 s1

,從而得到 pi

的值。怎樣求出扇形面積在正方形面積中佔的比例 k

呢?乙個辦法是在正方形中隨機投入很多點,使所投的點落在正方形中每乙個位置的機會相等看其中有多少個點落在扇形內。將落在扇形內的點數 m

與所投點的總數 n

的比 m/n

作為 k

的近似值。 p

落在扇形內的充要條件是 x^2+y^2<=1

。 程式描述:

/*<

iostream

>

<

cmath

>

<

ctime

>

#define

count500000

//迴圈取樣次數

using

namespace

std;

bool

incircle(

double

x,double

y)//

是否在1/4圓範圍之內

...

void

main()

...

<<

"pi:

"<<

(num

*4.0)/

count

<<

endl;

結果:測試 5

次的結果顯示: 3.13958

, 3.14041

, 3.13729

, 3.13859

, 3.14186

蒙特卡洛法求圓周率

利用蒙特卡洛演算法求圓周率是乙個概率的方法,關於這方面的內容很多,而且也很容易理解,更多具體分析過程可以參考如下文章 下面是我的理解和 蒙特卡洛演算法是通過概率來計算pi的值的。對於乙個單位為1的正方形,以其某乙個頂點為圓心,邊為半徑在正方形內畫扇形 乙個1 4的圓形的扇形 那麼扇形的面積就是pi ...

蒙特卡洛方法計算圓周率

import random import math defcalpai n 10000000 隨機實驗次數 r 1.0 圓的半徑 a,b 0.0 0.0 中心點 x neg,x pos a r,a r x座標取值範圍 y neg,y pos b r,b r y座標取值範圍 count 0 落在圓內的...

蒙特卡洛演算法 投點求圓周率Pi

蒙特卡洛演算法是以概率和統計的理論 方法為基礎的一種計算方法,將所求解的問題同一定的概率模型相聯絡 用電子計算機實現統計模擬和抽樣,以獲得問題的近似解,故又稱統計模擬法或統計實驗法。蒙特卡洛演算法 蒙特卡洛是美國摩納哥的乙個城市,以賭博聞名於世。蒙特卡洛演算法借用這一城市的名稱是為了象徵性的表明該方...