专栏首页readmePI 圆周率
原创

PI 圆周率

def pi_01():
    pi, N=0, 100
    func = lambda i: 1/pow(16,i)*(4/(8*i+1)- 2/(8*i+4)-1/(8*i+5)-1/(8*i+6))
    for i in range(N): pi+=func(i)
    print(pi)

import random, time
def pi_02():
    N, k =1000*1000, 0
    start=time.perf_counter()
    for i in range(N):
        x,y = random.random(),random.random()
        dist = pow(x**2+y**2,0.5)
        if dist <= 1.0: k+=1
    pi=4*(k/N)
    print("pi={},run time={:.2f}s".format(pi,time.perf_counter()-start))

# pi = pi * Decimal(12)/Decimal(640320**Decimal(1.5))
def pi_03():
    from decimal import Decimal, getcontext
    getcontext().prec=100
    print(sum(1/Decimal(16)**k * 
                  (Decimal(4)/(8*k+1) - 
                   Decimal(2)/(8*k+4) - 
                   Decimal(1)/(8*k+5) -
                   Decimal(1)/(8*k+6)) for k in range(100)))

if __name__ == "__main__":
    pi_01()
    pi_02()
    pi_03()

3.141592653589793

pi=3.13904 , run time=0.77s

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117070

[Finished in 0.9s]

https://www.zhihu.com/question/20756479

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AES 高级加密标准

    The Advanced Encryption Standard (AES), also known by its original name Rijndael...

    readme
  • Histogram 直方图

    直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

    readme
  • IP camera access 网络摄像头调用

    GoPro访问基于无线网络连接和socket直接访问udp资源,实测视频延迟有点厉害,应该还是码流/压缩的原因,访问有些应用层的rtsp协议相对更快,同时Op...

    readme
  • 强化学习(二)马尔科夫决策过程(MDP)

        在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素。但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简...

    刘建平Pinard
  • 彻底搞定C语言指针(精华版)

    1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: ...

    Angel_Kitty
  • selenium自动化测试-2.浏览器基本操作

    所谓浏览器操作是指webdriver 通过协议和接口发现DOM中的元素,并实现控制浏览器的行为,例如打开浏览器、控制浏览器大小、浏览器刷新及浏览器前进、后退等,...

    橙子探索测试
  • Selenium自动化测试-浏览器基本操作

    所谓浏览器操作是指webdriver 通过协议和接口发现DOM中的元素,并实现控制浏览器的行为,例如打开浏览器、控制浏览器大小、浏览器刷新及浏览器前进、后退等,...

    ITester软件测试小栈
  • selenium自动化测试-2.浏览器基本操作

    所谓浏览器操作是指webdriver 通过协议和接口发现DOM中的元素,并实现控制浏览器的行为,例如打开浏览器、控制浏览器大小、浏览器刷新及浏览器前进、后退等,...

    ITester软件测试小栈
  • C++STL中map容器的说明和使用技巧(杂谈)

    1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,...

    Angel_Kitty
  • 用于RichTextBox控件记录日志信息

    跟着阿笨一起玩NET

扫码关注云+社区

领取腾讯云代金券