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



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

1.3、擴展隨機數(shù)函數(shù)



二、案例需求

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



六、復盤所學知識
1、隨機數(shù)庫random是python的標準庫
2、常用隨機函數(shù)random() , seed()
到此這篇關(guān)于基于Python實現(xiàn)蒙特卡洛法計算圓周率π的文章就介紹到這了,更多相關(guān)Python 計算圓周率π內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作,結(jié)合實例形式較為詳細的分析了flask框架使用DBUtils模塊連接數(shù)據(jù)庫的常見操作技巧與相關(guān)注意事項,需要的朋友可以參考下2018-07-07
python爬蟲中g(shù)et和post方法介紹以及cookie作用
本篇文章通過爬取163郵箱實例介紹了python爬蟲中g(shù)et和post方法介紹以及cookie作用,對此有興趣的朋友學習下。2018-02-02
Python爬蟲數(shù)據(jù)的分類及json數(shù)據(jù)使用小結(jié)
這篇文章主要介紹了Python爬蟲數(shù)據(jù)的分類及json數(shù)據(jù)使用小結(jié),幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下2021-03-03
Pyhthon中使用compileall模塊編譯源文件為pyc文件
這篇文章主要介紹了Pyhthon中使用compileall模塊編譯源文件為pyc文件,需要的朋友可以參考下2015-04-04

