基于Python實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π
一、前置內(nèi)容
蒙特卡羅法也稱統(tǒng)計(jì)模擬法、統(tǒng)計(jì)試驗(yàn)法。是把概率現(xiàn)象作為研究對象的數(shù)值模擬方法。是按抽樣調(diào)查法求取統(tǒng)計(jì)值來推定未知特性量的計(jì)算方法。蒙特卡羅是摩納哥的著名賭城,該法為表明其隨機(jī)抽樣的本質(zhì)而命名。故適用于對離散系統(tǒng)進(jìn)行計(jì)算仿真試驗(yàn)。在計(jì)算仿真中,通過構(gòu)造一個和系統(tǒng)性能相近似的概率模型,并在數(shù)字計(jì)算機(jī)上進(jìn)行隨機(jī)試驗(yàn),可以模擬系統(tǒng)的隨機(jī)特性。 [1]
1.1、了解random庫
random庫是使用隨機(jī)數(shù)的Python標(biāo)準(zhǔn)庫
偽隨機(jī)數(shù) :采用 梅森旋轉(zhuǎn)算法 (偽)隨機(jī)序列中元素
random庫主要用于生成隨機(jī)數(shù)
使用random庫: import random
1.2、基本隨機(jī)數(shù)函數(shù)



為什么要隨機(jī)種子呢?
因?yàn)榻o了隨機(jī)數(shù)種子, 調(diào)用的random()出的隨機(jī)數(shù)是相同 , 那么對于一個隨機(jī)數(shù)程序來說 , 可以做到復(fù)現(xiàn)的作用

1.3、擴(kuò)展隨機(jī)數(shù)函數(shù)



二、案例需求

看四分之一的部分 , 使用蒙特卡洛方法 , 模擬1000000次點(diǎn)隨機(jī)落在這個四分之一上面 , 記錄落在四分之一?內(nèi)的,最后 4*( 四分之一落入圓內(nèi)的隨機(jī)點(diǎn)/四分之一部分面積), 算出來就是圓周率。
使用蒙特卡洛法計(jì)算圓周率
輸入:無
輸出:一般為3.14...
三、案例分析與解決過程
一、怎么使用蒙特卡洛方法計(jì)算圓周率?
答案:看四分之一的部分 , 使用蒙特卡洛方法 , 模擬1000000次點(diǎn)隨機(jī)落在這個四分之一上面 , 記錄落在四分之一?內(nèi)的,最后 4*( 四分之一落入圓內(nèi)的隨機(jī)點(diǎn)/四分之一部分面積), 算出來就是圓周率。
二、怎么判斷落入點(diǎn)在圓中?
答案:在單位?中 , 半徑為1 , 那么隨機(jī)點(diǎn)的x,y值 , (x平方+y平方之和的開方) 為隨機(jī)點(diǎn)到圓心的距離 , 如果該距離小于1,那么判斷該隨機(jī)點(diǎn)在圓心中. 距離代碼 pow(x2+y2 , 0.2)
四、完整代碼
from random import random
# 投入1000000個隨機(jī)點(diǎn)
DARTS = 1000*1000;
hits = 0.0
for i in range (1 , DARTS +1 ):
x , y =random() ,random() ;
# 點(diǎn)到圓心的距離
dist = pow(x**2 + y**2 , 0.5 )
# 判斷拋出點(diǎn)與圓心距離 , 小于半徑 , 在圓中
if(dist < 1.0):
hits = hits +1 ;
pi = 4 * (hits / DARTS)
print("圓周率為:{}".format(pi))五、檢驗(yàn)與驗(yàn)收代碼



六、復(fù)盤所學(xué)知識
1、隨機(jī)數(shù)庫random是python的標(biāo)準(zhǔn)庫
2、常用隨機(jī)函數(shù)random() , seed()
到此這篇關(guān)于基于Python實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π的文章就介紹到這了,更多相關(guān)Python 計(jì)算圓周率π內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架使用DBUtils模塊連接數(shù)據(jù)庫的常見操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-07-07
python爬蟲中g(shù)et和post方法介紹以及cookie作用
本篇文章通過爬取163郵箱實(shí)例介紹了python爬蟲中g(shù)et和post方法介紹以及cookie作用,對此有興趣的朋友學(xué)習(xí)下。2018-02-02
Python爬蟲數(shù)據(jù)的分類及json數(shù)據(jù)使用小結(jié)
這篇文章主要介紹了Python爬蟲數(shù)據(jù)的分類及json數(shù)據(jù)使用小結(jié),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
教你怎么用Python實(shí)現(xiàn)自動生日祝福
這篇文章主要介紹了教你怎么用Python實(shí)現(xiàn)自動生日祝福,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
Pyhthon中使用compileall模塊編譯源文件為pyc文件
這篇文章主要介紹了Pyhthon中使用compileall模塊編譯源文件為pyc文件,需要的朋友可以參考下2015-04-04
python破解bilibili滑動驗(yàn)證碼登錄功能
這篇文章主要介紹了python破解bilibili滑動驗(yàn)證碼登錄功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

