一、要求
1.要求能算到小数点后面越多越好(5分)
2.并用进度条提示算的进度,,能给出多种进度条越好(5分)
3.要求给出算圆周率Pi具体公式或者算法说明
二、算法 —— 蒙特卡罗法
1、第一种进度条
from random import random from math import sqrt import time DARTS=100000000 hits=0.0 scale=10 print("------执行开始------") for i in range(scale+1): a,b='**'*i,'..'*(scale-i) c=(i/scale)*100 print("%{:^3.0f}[{}->{}]".format(c,a,b)) time.sleep(0.1) time.perf_counter() 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) print("pi值是{}".format(pi)) print("运行时间是:{:.2f}s".format(time.perf_counter())) print("------执行结束------")
运行结果
2、第二种进度条
from random import random from math import sqrt import time DARTS=100000000 hits=0.0 print("------执行开始------") for i in range(101): print("\r{:2}%".format(i),end='') time.sleep(0.05) time.perf_counter() 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) print("pi值是{}".format(pi)) print("运行时间是:{:.2f}s".format(time.perf_counter())) print("------执行结束------")
运行结果
标签:scale,dist,Python,圆周率,random,time,------,import,pi From: https://www.cnblogs.com/0cyy0/p/17796636.html