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#落在圓內的概率
for i in
range(0
, n)
: x = random.uniform(x_neg, x_pos)
y = random.uniform(y_neg, y_pos)
if x*x + y*y <=
1.0:
count +=
1return
(count /
float
(n))*4
#print (count / float(n)) * 4
if __name__ ==
'__main__'
: value = calpai(
)print
("pi = "
,value)
print
("error = "
,100
*abs
(math.pi-value)
/math.pi,
"%")
第乙個例子是,如何用蒙特卡羅方法計算圓周率π。
正方形內部有乙個相切的圓,它們的面積之比是π/4。
現在,在這個正方形內部,隨機產生10000個點(即10000個座標對 (x, y)),計算它們與中心點的距離,從而判斷是否落在圓的內部。
如果這些點均勻分布,那麼圓內的點應該佔到所有點的 π/4,因此將這個比值乘以4,就是π的值。
蒙特卡洛法求圓周率
利用蒙特卡洛演算法求圓周率是乙個概率的方法,關於這方面的內容很多,而且也很容易理解,更多具體分析過程可以參考如下文章 下面是我的理解和 蒙特卡洛演算法是通過概率來計算pi的值的。對於乙個單位為1的正方形,以其某乙個頂點為圓心,邊為半徑在正方形內畫扇形 乙個1 4的圓形的扇形 那麼扇形的面積就是pi ...
利用蒙特卡洛演算法求圓周率
from 背景知識 蒙特卡洛是摩納哥公國第一大城市,與澳門 美國拉斯維加斯並稱世界三大賭城。位於地中海沿岸,首都摩納哥之北,建於阿爾卑斯山脈突出地中海的懸崖之上。景色優美,是地中海地區旅遊勝地。市內置有豪華的旅館 俱樂部 歌劇院 商店 游泳池 溫泉浴室 運動場等娛樂設施 城內開設有蒙特卡洛大賭場。賭...
蒙特卡洛方法 玩具例子 1 圓周率
正方形內部有乙個相切的圓,它們的面積之比是 4。由圓面積和正方形面積公式可得 s圓 面積s正 方形 r2 2 r 2 4現在向上面的正方形區域均勻的隨機撒點,通過計算落在圓內的點數與總的點數來估計 coding utf8 import numpy as np import matplotlib.py...