python计算圆周率的方法 |
您所在的位置:网站首页 › python计算圆周率的两种方法 › python计算圆周率的方法 |
一、要求 1.要起义能计算到圆周率后面越多位越好。 2.用进度条显示计算的进度,能给出越多种进度条越好。 3.要求给出圆周率π的具体公式或者算法说明。 二、算法 1、马青公式:马青公式每计算一项可以得到1.4位的十进制精度。 2、蒙特卡罗法(我们使用这种方法) 一个正方形内部相切一个圆,圆和正方形的面积之比是π/4。 在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。 统计圆内的点数,与n的比值乘以4,就是π的值。理论上,n越大,计算的π值越准 三、进度条 1、time库: (1)perf_counter( )函数,用于测量时间,返回一个CPU级别的精确时间计数值,单位为妙,由于这个计数值起点不确定,连续调用使用差值才有意义。 (2)sleep(s)函数,产生 s妙的休眠时间,可以是浮点数,如time.sleep(3.5)。 (3)time.clock()函数,统计cpu时间 的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的插值即为程序运行的cpu时间。 2、tqdm库:Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。 步骤如下: (1)安装tqdm 1 pip install tqd (2)导入tqdm库 1 from tqdmimport tqdm (3)tqdm示例 1 2 for iin tqdm(range(1000000)): pass 四、算法实现 1、time库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 from randomimport random from timeimport clock DARTS=100000 hits= 0.0 a=1 clock() for iin range(1,DARTS+1): x,y= random(),random() dist= pow(x** 2 + y** 2,0.5) if dist=1e-6): total+=t n+=2 s=-s t=s/n k=total*4 print("π值是{:.10f} 运行时间为{:.4f}秒".format(k,clock())) for iin tqdm(range(101)): print("\r{:3}%".format(i),end="") sleep((clock())/100)#用执行程序的总时间来算出进度条间隔的时间 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |