python模擬蒙特 卡羅法計算圓周率

2022-08-26 09:21:08 字數 1019 閱讀 3578

蒙特·卡羅方法是一種通過概率來得到問題近似解的方法,在很多領域都有重要的應用,其中就包括圓周率近似值的計問題。

假設有一塊邊長為2的正方形木板,上面畫乙個單位圓,然後隨意往木板上扔飛鏢,落點座標(x,y)必然在木板上(更多的時候是落在單位圓內),

如果扔的次數足夠多,那麼落在單位圓內的次數除以總次數再乘以4,這個數字會無限逼近圓周率的值。

這就是蒙特·卡羅發明的用於計算圓周率近似值的方法。

編寫程式,模擬蒙特·卡羅計算圓周率近似值的方法,輸入擲飛鏢次數,然後輸出圓周率近似值。

import random,math

s = 1 * 1

c = int(input())

hit = c

hits = 0

while hit != 0 :

hit = hit - 1

x = random.random()

y = random.random()

z = math.sqrt(x**2+y**2)

if z <= 1:

hits = hits + 1

pi = 4 * hits/c

print(pi)

這段程式主要運用通過計算落點的座標與原點的距離來確定鏢是否在中在圓內

當執行的次數足夠大,也就會越來越逼近圓周率

另外再說一點就是python中的random()函式

random()函式的呼叫方法如下

import random

x = random.random()

返回的值在(0,1]之間

Python通過蒙特卡羅法計算 值

我們知道以r為半徑的圓的面積是 r2 pi r 2 r2,以r為邊長的正方形的面積是r 2r 2 r2,兩者面積之比即為 pi 的值。具體演算法是模擬乙個邊長為1的正方形,隨機在其中生成n個點,當n趨向於無窮大時,整個正方形就被這n個點所填滿 下圖中藍色區域 在這n個點之中,統計出落入以1為半徑的扇...

強化學習 蒙特卡羅法

從本章起,我們開始解決更貼近實際的問題。前面提到我們接觸過的問題有乙個特點,即我們可以知道環境運轉的細節,具體說就是知道狀態轉移概率 p s s t,a t 對蛇棋來說,我們可以看到蛇棋的棋盤,也就可以了解到整個遊戲的全貌,這時我們相當於站在上帝視角,能夠看清一切情況。在很多實際問題中,我們無法得到...

馬爾可夫鏈蒙特卡羅法

蒙特卡羅法 思想 假設概率分布的定義已知,然後通過隨機抽樣獲得概率分布的隨機樣本,通過得到的隨機樣本對概率分布的特徵進行分析。for example 從隨機抽出的樣本中計算出樣本均值,從而得到總體的期望。蒙特卡羅方法的核心 隨機抽樣 主要有直接抽樣,接受 拒絕抽樣,重要性抽樣 隨機抽樣 接受拒絕抽樣...