基于Python實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π
一、前置內(nèi)容
蒙特卡羅法也稱統(tǒng)計(jì)模擬法、統(tǒng)計(jì)試驗(yàn)法。是把概率現(xiàn)象作為研究對(duì)象的數(shù)值模擬方法。是按抽樣調(diào)查法求取統(tǒng)計(jì)值來推定未知特性量的計(jì)算方法。蒙特卡羅是摩納哥的著名賭城,該法為表明其隨機(jī)抽樣的本質(zhì)而命名。故適用于對(duì)離散系統(tǒng)進(jìn)行計(jì)算仿真試驗(yàn)。在計(jì)算仿真中,通過構(gòu)造一個(gè)和系統(tǒng)性能相近似的概率模型,并在數(shù)字計(jì)算機(jī)上進(jìn)行隨機(jī)試驗(yàn),可以模擬系統(tǒng)的隨機(jī)特性。 [1]
1.1、了解random庫(kù)
random庫(kù)是使用隨機(jī)數(shù)的Python標(biāo)準(zhǔn)庫(kù)
偽隨機(jī)數(shù) :采用 梅森旋轉(zhuǎn)算法 (偽)隨機(jī)序列中元素
random庫(kù)主要用于生成隨機(jī)數(shù)
使用random庫(kù): import random
1.2、基本隨機(jī)數(shù)函數(shù)
為什么要隨機(jī)種子呢?
因?yàn)榻o了隨機(jī)數(shù)種子, 調(diào)用的random()出的隨機(jī)數(shù)是相同 , 那么對(duì)于一個(gè)隨機(jī)數(shù)程序來說 , 可以做到復(fù)現(xiàn)的作用
1.3、擴(kuò)展隨機(jī)數(shù)函數(shù)
二、案例需求
看四分之一的部分 , 使用蒙特卡洛方法 , 模擬1000000次點(diǎn)隨機(jī)落在這個(gè)四分之一上面 , 記錄落在四分之一?內(nèi)的,最后 4*( 四分之一落入圓內(nèi)的隨機(jī)點(diǎn)/四分之一部分面積), 算出來就是圓周率。
使用蒙特卡洛法計(jì)算圓周率
輸入:無
輸出:一般為3.14...
三、案例分析與解決過程
一、怎么使用蒙特卡洛方法計(jì)算圓周率?
答案:看四分之一的部分 , 使用蒙特卡洛方法 , 模擬1000000次點(diǎn)隨機(jī)落在這個(gè)四分之一上面 , 記錄落在四分之一?內(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個(gè)隨機(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é)知識(shí)
1、隨機(jī)數(shù)庫(kù)random是python的標(biāo)準(zhǔn)庫(kù)
2、常用隨機(jī)函數(shù)random() , seed()
到此這篇關(guān)于基于Python實(shí)現(xiàn)蒙特卡洛法計(jì)算圓周率π的文章就介紹到這了,更多相關(guān)Python 計(jì)算圓周率π內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
終于搞懂了Python中super(XXXX,?self).__init__()的作用了
本文主要介紹了終于搞懂了Python中super(XXXX,?self).__init__()的作用了,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python調(diào)用百度api實(shí)現(xiàn)語音識(shí)別詳解
這篇文章主要介紹了Python通過調(diào)用百度api實(shí)現(xiàn)語音識(shí)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2021-12-12python+appium+yaml移動(dòng)端自動(dòng)化測(cè)試框架實(shí)現(xiàn)詳解
這篇文章主要介紹了python+appium+yaml移動(dòng)端自動(dòng)化測(cè)試框架實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11