1、蒙特卡洛法:
通过获得面积比Sy/Sz:让计算机产生很多的随机点(x,y),其中x、y都是[0,1]之间的随机数,可以用判断 是否小于1的方法来确定是否在圆内,则圆内的点数代表圆面积,总点数代表总面积,两者相除就是面积比Sy/Sz。
Python代码展示如下:
from random import random
from math import sqrt
import time
darts = 10000000 #共这么多个点撒落
hits = 0.0 #击进圆内的点
time.perf_counter()
for i in range(1, darts+1):
x, y = random(), random()
dist = sqrt(x**2 + y**2) #开根号 算点落下是否在半径内
if dist <= 1.0: #圆的半径默认1
hits = hits + 1 #进入了圆内的点
pi = 4 * (hits/darts)
print("pi值是{}".format(pi))
print("运行时间是{:5.5}s".format(time.perf_counter()))
运行结果: