蒙特.卡羅方法求解圓周率近似值原理與Python實現
對於某些不能精確求解的問題,蒙特.卡羅方法是一種非常巧妙的尋找近似解的方法。
以求解圓周率的問題為例,假設有一個單位圓及其外切正方形,我們往正方形內扔飛鏢,當扔的次數足夠多以後,“落在圓內的次數/落在正方形內的次數”這個比值會無限接近“圓的面積/正方形的面積”這個比值,也就是圓周率的四分之一。模擬扔飛鏢的次數越多,圓周率的近似結果越精確。
實現程式碼為:
from random import random
def estimatePI(times):
hits = 0
for i in range(times):
x = random()*2 - 1
y = random()*2 - 1
if x*x + y*y <= 1:
hits += 1
return 4.0 * hits/times
print(estimatePI(10000))
print(estimatePI(1000000))
print(estimatePI(100000000))
print(estimatePI(1000000000))
執行結果為:
3.1396
3.1419
3.141688
3.141591436
----------相關閱讀----------
----------喜大普奔----------
1、繼《Python程式設計基礎
https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3
2、董付國老師新作《中學生可以這樣學Python》已於2017年10月正式出版,很快會在各大書城全面上架。
4、董老師免費視訊地址: http://pan.baidu.com/s/1c14WYn2 密碼: 9xwr
5、董老師收費視訊課:
CSDN學院:http://edu.csdn.net/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0
龍果學院:http://www.roncoo.com/course/list.html?courseName=Python%E5%8F%AF%E4%BB%A5%E8%BF%99%E6%A0%B7%E5%AD%A6