前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PI 圆周率

PI 圆周率

原创
作者头像
vanguard
修改2020-03-16 11:02:26
8040
修改2020-03-16 11:02:26
举报
文章被收录于专栏:vanguardvanguardvanguard
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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档