1. 程式人生 > >蒙特.卡羅方法求解圓周率近似值原理與Python實現

蒙特.卡羅方法求解圓周率近似值原理與Python實現

對於某些不能精確求解的問題,蒙特.卡羅方法是一種非常巧妙的尋找近似解的方法。

以求解圓周率的問題為例,假設有一個單位圓及其外切正方形,我們往正方形內扔飛鏢,當扔的次數足夠多以後,“落在圓內的次數/落在正方形內的次數”這個比值會無限接近“圓的面積/正方形的面積”這個比值,也就是圓周率的四分之一。模擬扔飛鏢的次數越多,圓周率的近似結果越精確。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

實現程式碼為:

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程式設計基礎

》(2017年9月第5次印刷)、《Python程式設計(第2版)》(2017年9月第4次印刷)、《Python可以這樣學》(2017年7月第3次印刷)系列圖書之後,董付國老師新書《Python程式設計開發寶典》(2017年10月第2次印刷)。為慶祝新書《Python程式設計開發寶典》全面上架,清華大學出版社聯合“贛江圖書專營”淘寶店推出特價優惠活動,《Python程式設計開發寶典》原價69元,新書上架期間超低價39.8元,可以複製下面的連結使用瀏覽器開啟檢視圖書詳情和購買:

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