python蒙特卡罗法求圆周率

写的有些潦草,哈哈

为什么蒙特卡罗法里为什么是4乘落在圆内的除以整个所有的点。用面积比例求出来。
S圆=PI*R*R
S方=2*2=4
S圆/S方 = 落在圆内 / 落在方形内所有
S圆=PI*1*1=PI
S圆=S方 * 落在圆内 / 落在方形内所有
S方 = 2 * 2 整个正方形的变长是2
所以前边乘以4

import random

def estimatePi(times):  # times是往正方形内射入飞镖的个数
    hists = 0  # 定义落入圆内的飞镖的次数
    cnt = 0 # 记录飞镖落入圆内的个数
    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)

你可能感兴趣的:(python蒙特卡罗法求圆周率)