python自学笔记--计算圆周率

圆周率π的计算

圆周率是一个无理数,没有任何一个精确公式能计算π值。π的计算只能采用近似算法。
国际公认的PI值计算采用蒙特卡洛方法。
蒙特卡洛方法,又称随机抽样或统计试验方法。当所求解问题是某种事件出现的概率,或某随机变量期望值时,可以通过某种“试验”的方法求解。
也可以说蒙特卡洛是利用随机试验求解问题的方法。

蒙特卡洛方法求解π值的步骤:
①构造一个单位正方形和1/4圆
在这里插入图片描述
②随机向单位正方形抛洒大量随机点,对于每个点,可能在圆内或者圆外,当随机抛点数量达到一定程度,圆内点将可看成构成圆的面积,全部抛点将构成矩形面积。圆内点数除以圆外点数就是面积之比,即π/4。随机点数量越大,得到的π值越精确。

π计算问题的IPO表示如下:
输入:抛点的数量

处理:对于每个抛洒点,计算点到圆心的距离,通过距离判断该点在圆内或是圆外。统计在圆内点的数量总和

输出:π值

#蒙特卡洛方法计算π值
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到1000*1000开始投掷
    x, y = random(), random()   #随机生成0-1的坐标点
    dist = pow(x ** 2 + y ** 2, 0.5)   #计算点到圆心的距离
    if dist <= 1.0:                #如果距离小于等于1,说明在圆里。
     hits = hits + 1                
pi = 4 * (hits/DARTS)
print("圆周率值是: {}".format(pi))
print("运行时间是: {:.5f}s".format(perf_counter() - start))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值