python用蒙特卡罗法求pi_【初学Python】实例六:蒙特卡洛方法求圆周率

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

下面我们使用蒙特卡洛方法计算圆周率:

具体是,首先在一个x,y坐标系内,划分一个实际大小的正方形,然后假定向这个正方形里面洒黄豆,然后我们根据这个正方形的某一个点为圆心,画一个四分之一圆,进而利用数学方法,计算落在这个扇形里面的黄豆数量,和正方形里面的黄豆数量,然后根据数学关系即可计算出圆周率的值。自然地,这个正方形越大,往里面投的黄豆数量越多,越接近于实际的圆周率.

我们用计算思维来理解这件事,洒黄豆的行为我们可以借助于随机数来实现,然后我们给出代码:

#实例六:蒙特卡罗圆周率计算

from random import random

from time import perf_counter

darts = 1000 * 1000 #虚拟一个1000*1000的正方形

hit = 0.0

start = perf_counter()

for i in range(1,darts+1):

x,y = random(),random()

dist = pow(x**2+y**2,0.5)#计算点x,y到圆心的距离

if dist <= 1.0:

hit = hit +1

pi = 4 * (hit/darts)

print("圆周率是:{}".format(pi))

end = perf_counter() - start

print("运行时间是:{:.2f}S".format(end))

这里,我们假定这个正方形的规格是1000*1000,我们可以让这个面积更大,这样我们计算出的圆周率也就越准确

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值