python学习笔记 第四章2(用蒙特卡罗法计算圆周率)

圆周率的计算:
首先用基本公式求解:
在这里插入图片描述
程序为:

#精确圆周率
pi=0
N=100
for k in range(N):
pi=pi+1/pow(16,k)(
4/(8
k+1)-2/(8k+4)-
1/(8
k+5)-1/(8*k+6))
print(“圆周率的值为:{}”.format(pi))

运行结果为3.141592653589793
下面我们考虑蒙特卡罗方法,思路为随机向一个边长为1的正方形内撒点,最终在正方形的内切圆内的点占正方形的比例即为pi/4。
在这里插入图片描述
代码如下:

#蒙特卡罗法计算圆周率
from random import random
from time import perf_counter
num=1000010000
hits=0.0
start=perf_counter()
for i in range(1,num+1):
x,y=random(),random()
dis=pow(x2+y2,0.5)
if dis<=1.0:
hits=hits+1
pi=4
(hits/num)
print(“圆周率的值为:{}”.format(pi))
print(“运算时间为:{:.5f}s”.format(perf_counter()-start))

在这里插入图片描述
num试了两个值,分别为10001000与1000010000。
三段代码运行结果如下:

在这里插入图片描述
可以看出,尝试的次数多不一定会更加精确,即是一个随机的结果,不能肯定,但是当数目逐渐趋于无穷大时,会向精确值不断接近。
也可以告诉我们,如果想考虑近似值,我们可以利用计算机强大的计算功能去模拟,不一定一定需要数学思维求解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值