python蒙特卡羅法求圓周率

寫(xiě)的有些潦草,哈哈

為什么蒙特卡羅法里為什么是4乘落在圓內(nèi)的除以整個(gè)所有的點(diǎn)。用面積比例求出來(lái)。
S圓=PI*R*R
S方=2*2=4
S圓/S方 = 落在圓內(nèi) / 落在方形內(nèi)所有
S圓=PI*1*1=PI
S圓=S方 * 落在圓內(nèi) / 落在方形內(nèi)所有
S方 = 2 * 2 整個(gè)正方形的變長(zhǎng)是2
所以前邊乘以4

import random

def estimatePi(times):  # times是往正方形內(nèi)射入飛鏢的個(gè)數(shù)
    hists = 0  # 定義落入圓內(nèi)的飛鏢的次數(shù)
    cnt = 0 # 記錄飛鏢落入圓內(nèi)的個(gè)數(shù)
    for i in range(times):
        x = random.random() * 2 - 1  # x in the interval [0, 1) ---[-1,1]
        y = random.random() * 2 - 1
        if x * x + y * y <= 1:
            hists += 1
        cnt += 1
        if cnt >= times:
            break
    return 4.0 * hists / times

result = estimatePi(100000)
print(result)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容