用python计算圆周率PI(第四周作业)

计算圆周率pi的方法

一、公式法

#CalPiV1.py
pi=0
N=100
for i in range(N):
    pi+=1/pow(16,i)*(4/(8*i+1)-\
        2/(8*i+4)-1/(8*i+5)-1/(8*i+6))
print(pi)

 

二、蒙特卡罗

#CalPiV2.py
import random
import time
N=1000*1000
k=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))

 

三、带进度条的运算

from random import random  
from math import sqrt  
from time import *  
from tqdm import tqdm  
DARTS=100000000  
hits=0.0  
clock()  
for i in range(1,DARTS+1):  
    x,y=random(),random()  
    dist=sqrt(x**2+y**2)  
    if dist <=1.0:  
        hits=hits+1  
pi=4*(hits/DARTS)  
for i in tqdm(range(10)):  
    print("\r{:3}%\n".format(i/10*100),end="") #这里的i/10*100指每10%显示一次  
    sleep((clock())/100)#用执行程序的总时间来算出进度条间隔的时间    
print("pi的值{}.".format(pi))  
print("运行时间:{:.5f}s".format(clock()))

 

posted @ 2020-11-09 18:41  唯闻卿卿  阅读(457)  评论(0编辑  收藏  举报