我的Python学习之路(4)

今日学习内容

1.跟随视频课程,学习了Python分支结构、循环结构、异常处理等语法内容
2.掌握并了解Python基本库中的random库随机函数的用法
3.根据所学内容应用并求解圆周率,我使用了两种方法来计算圆周率,分别是近似公式法和蒙特卡罗法
(1)近似公式法
公式:
近似公式法
源代码:

#CalPi.py
Pi = 0
N = 10000
for k in range(N):
    Pi += 1 / pow(16, k) * (4 / (8 * k + 1) - 2 / (8 * k + 4) - 1 / (8 * k + 5) - 1 / (8 * k + 6))
print("圆周率的值:{}".format(Pi))

(2)蒙特卡罗法:
基本思想:百度百科
蒙特卡罗法

源代码:

#CalPi2.py
import random
import time

Darts = 1000*1000
inside = 0.0
start = time.perf_counter()
for i in range(1, Darts + 1):
    x, y = random.random(), random.random()
    distance = pow(x ** 2 + y ** 2, 0.5)
    if distance <= 1.0:
        inside += 1
Pi = 4 * (inside / Darts)
print("圆周率约是:{}".format(Pi))
print("运算时间是:{:.5f}s".format(time.perf_counter() - start))

总结:经过两种方法的比较,近似公式法求解圆周率速度较快,但当小数点后的位数更大时,数据不够精准。蒙特卡罗方法相反,运行时间较长,但当小数点后位数足够大时,其计算出的数值更加准确。本例中所有散点的规模为1000*1000,也就是一百万,远远不能够体现蒙特卡罗方法的准确性,需要更多的散点数量及更好的算法设计来体现。
注:本文是博主本人学习的日常记录,不进行任何商用所以不支持转载请理解!如果你也对Python有一定的兴趣和理解,欢迎随时找博主交流~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值