数学建模-蒙特卡罗算法求圆周率
让计算机每次随机生成两个0到1之间的数,看以这两个实数为横纵坐标的点是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:4,PI为圆周率),当随机点获取越多时,其结果越接近于圆周率。
2.新建Python文件编写代码。

3.首先引入random库和time库,调用random和perf_counter.
from math import dist
from random import Random, random
from time import perf_counter
4.编写一个初始变量DARTS,表示当前区域撒点数量,本例设置为一百万。
在写一个变量hits,表示圆内点的数量。
在编写一个计时函数start。
DARTS =1000*1000
hits =0.0
start = perf_counter()
5.然后编写模拟撒点代码。
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)
6.最后编写输出代码。
print("圆周率值为:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
7.点击运行代码。
8.输出结果。
9.整体代码
from math import dist
from random import Random, 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))

浙公网安备 33010602011771号