π的计算

1.π的来历

π即圆周率,定义为:园的周长和直径之比,是一个常数。通常用希腊字母π来表示。π=3.14159265.....,通常用π=3.14进行计算。英国人琼斯在1706年首次使用π,代表圆周率,但是没有被采用,后来,欧拉予以提倡,才渐渐被推广开来。此后π成为圆周率的专用符号。π的历史是饶有趣味的。对于π的研究程度,在一定程度上反映一个地区和时代的数学水平。

2.π的计算方法

法1:Wallis公式的计算方法(沃利斯公式)

法2:蒙特卡罗方法(抛点法)

3.代码实现

法1:Wallis公式的计算方法(沃利斯公式)

 1 from time import perf_counter
 2 def Dt(i):
 3     N = pow(10,p)
 4     a = int((i/N)*50)
 5     b = 50 - a
 6     Y , N = '*' * a , '.' * b
 7     print("\r计算中:{:3.0f}% [{}->{}] {:.2f}s".format(2*a,Y,N,perf_counter()),end='')
 8
 9 p = eval(input('计算Pi精确到小数点后几位数:'))
10 print('\n{:^70}'.format('计算开始'))
11 a,b,pi,chu,i,j=2,3,1,2,1,0
12 perf_counter()
13 while (i<=50000):
14     chu=a/b
15     pi*=chu
16     i+=1
17     if i%2==0:
18         a+=2
19     else:
20         b+=2
21     Dt(j)
22 print('\n{:=^70}'.format('计算完成'))
23 print('\nPi的计算值为:{}'.format(round(pi*4,p)))    

注:由于该算法并不熟悉,无法使其正确输出(循环停止的条件无法确定)

法2:蒙特卡罗方法(抛点法)

 1 from random import random
 2 from math import sqrt
 3 from time import perf_counter
 4 DARTS=100000000
 5 hits=0.0
 6 b=1
 7 perf_counter()
 8 for i in range(1,DARTS+1):
 9     x,y=random(),random()
10     dist=sqrt(x**2+y**2)
11     if dist<=1.0:
12         hits=hits+1
13     if i== DARTS*0.01*b :
14         print("\r%{} [{}->{}]".format(b,'*'*b,'-'*(10-b)),end="")
15         b+=1
16 pi = 4* (hits/DARTS)
17 print("\nPi=={:.7f}".format(pi))
18 print("运行时间为:{:.5f}s".format(perf_counter()))

4.结果显示

由图知:运行完成需要接近104s的时间

转载于:https://www.cnblogs.com/xiayiLL/p/10569161.html

计算圆周率π和显示进度条相关推荐

  1. 使用python计算圆周率(有进度条)

    博客园  首页  新随笔  新文章  联系  管理  订阅  使用 python 实现π的计算 π的计算 一.π的简介 π的介绍 圆周率用希腊字母 π(读作pài)表示,是一个常数(约等于3.1415 ...

  2. VC下载文件 + 显示进度条

    在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: UINT DownloadFile(LPVOID pParam) { CWn ...

  3. JavaWeb 使用ajax上传文件并显示进度条等上传信息

    文件上传在Web程序中是常用的功能,一般上传图片或者文件大小比较少的文件客户端不需要显示上传进度或文件上传的信息,如果是上传的文件比较大的时候,可以在客户端展示文件上传进度以及根据业务的需求显示文件上 ...

  4. .net导入Excel 并显示进度条

    在程序开发过程中,往往会涉及到将Excel表格导入到数据库中的需求,而当excel表格内容很多的时候,我们往往会很难去捕捉它的执行过程进度和一些错误信息,此时我们便可以通过以下方法去解决这些难题,具体 ...

  5. C#之进度条:用ProgressBar控件实现一边在后台进行算法计算一边在界面显示进度条,需借用BackgroundWorker

    近期有个任务需要用到进度条,发现只是单纯设置ProgressBar控件的值的话,并没办法同时实现算法计算和界面进度条显示,这时候需要使用到BackgroundWorker. 下面直接用代码举例说明,如 ...

  6. 文件上传(显示进度条、上传速度)

    XMLHttpRequest对象 使用XMLHttpRequest对象实现数据交互. //创建XMLHttpRequest对象 let xhr = new XMLHttpRequest(); //le ...

  7. 基于Jquery插件Uploadify实现实时显示进度条上传图片

    网址:http://www.jb51.net/article/83811.htm 这篇文章主要介绍了基于Jquery插件Uploadify实现实时显示进度条上传图片的相关资料,感兴趣的小伙伴们可以参考 ...

  8. android标题栏(titlebar)显示进度条

    在后台线程中执行各种操作(网络连接.大数据存储)的时候,我们希望让客户能看到后台有操作在进行,那么既能有效的提示用户,又不占用当前操作空间,最好的方法就是在标题栏有个进度条. [代码] [Java]代 ...

  9. Android 下载文件并显示进度条

    2019独角兽企业重金招聘Python工程师标准>>> OK,上一篇文章讲了上传文件到服务端,并显示进度条 那么这边文章主要讲下载文件并显示进度条. 由于简单,所以只上传代码.还是需 ...

最新文章

  1. “我付了钱,为何要说谢谢?”
  2. 荔枝FM 字体文件 IconFontTextView
  3. 构造函数不可以声明为虚函数,析构函数可以声明为虚函数
  4. Pycharm 创建 Django admin 用户名和密码
  5. 把aspx页面输出成xml的方法注意事项
  6. Springboot注册Filter
  7. 2017西安交大ACM小学期 美妙音乐[差分KMP匹配]
  8. 堆与优先队列课内模板
  9. ppt倒计时3分钟_老板发来200页PPT文件,让我翻译成英文,3分钟教你搞定
  10. [转] NOI, NOIP, IOI, ACM
  11. WXPY自动转发群消息
  12. 概率论与数理统计浙江大学笔记和课后答案
  13. sql with ties_SQL WITH TIES子句
  14. OC循环渐进:文件管理--计算文件大小的五种方式
  15. 程序员常用的工具网站
  16. Java中缓存之内存缓存
  17. Linux-curl指令
  18. 最近的事情比较多,很久没有回来了,这次终于又回来了。。。。。。
  19. Uglifyjs入门
  20. java greenfoot_的Java Greenfoot中,不能将文件

热门文章

  1. sql日期相关查询--当日至上月当天的日期列表
  2. 时序预测构建ARIMA模型时报错:NotImplementedError: statsmodels.tsa.arima_model.ARMA and statsmodels.tsa.arima_
  3. tkinter-Entry详解
  4. 野火串口助手协议发送文件通讯协议——XMODEM协议——YMODEM协议
  5. 京东网站具有的服务器,【京东后台服务器开发面试】问的都是比较基础,但个人准备不够充分-看准网...
  6. Shell基础之自定义变量
  7. 母亲节到了,用Python给老妈写个祝福小程序~
  8. C++算法:最大回文子串---动态规划-----夹逼法----中心扩展法
  9. 如何是实现微信会员开卡组件中一个手机号绑定一个微信号(思路篇)
  10. Bootstrap系列之警告框(Alert)