数学建模-蒙特卡罗算法求圆周率

1.首先了解蒙特卡洛方法。

让计算机每次随机生成两个0到1之间的数,看以这两个实数为横纵坐标的点是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:4,PI为圆周率),当随机点获取越多时,其结果越接近于圆周率。

如何用蒙特卡洛方法在Python环境下计算圆周率

2.新建Python文件编写代码。

如何用蒙特卡洛方法在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.输出结果。

image-20210805165549917

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))

 

posted on 2021-08-05 17:39  2019023132张赟  阅读(557)  评论(0)    收藏  举报