蒙特卡罗方法
利用随机点分布,让随机点足够的多,用指定区域随机点数与总区域随机点数做比值来求取指定区域面积
求解圆周率,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
代码如下:
#CalPi.py
from random import random
from time import perf_counter
DARTS = 1000*1000 #当前在区域中点的总数量
hits = 0.0 #目前在圆的内部的点的数量
start = perf_counter()
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))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
现以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。
代码如下:
from random import random,seed
seed(123)
darts = eval(input())
hits = 0.0
for i in range (darts):
x,y = random(),random()
d = pow(x**2+y**2,0.5)
if d <= 1.0:
hits = hits+1
pi = 4*(hits/darts)
print("圆周率的值为:{:.6f}".format(pi))