zoukankan      html  css  js  c++  java
  • 使用python计算圆周率(有进度条)

    π的计算

    一、π的简介

    • π的介绍

      圆周率用希腊字母 π(读作pài)表示,是一个常数(约等于3.141592654),是代表圆周长和直径的比值。它是一个即无限不循环小数,在日常生活中,通常都用3.14代表圆周率去进行近似计算。

    • π的求解历程

      1965年,英国数学家约翰·沃利斯(John Wallis)出版了一本数学专著,其中他推导出一个公式,发现圆周率等于无穷个分数相乘的积。

      2015年,罗切斯特大学的科学家们在氢原子能级的量子力学计算中发现了圆周率相同的公式。

      2019年3月14日,谷歌宣布圆周率现已到小数点后31.4万亿位。

     

      此处用一个自我感觉‘良好’的公式进行求解,说良好是因为计算结果相对准确,但计算过程用时较长,一起来学习吧~~~

     

     

    二、π的近似计算

       1. 计算公式 

                                   

     2. 方法讲解

      所用公式等式右边分子都为1,分母为递增数列,从第一项开始,奇数项符号为正,偶数项符号为负。等式右边的分母越大,越小,圆周率π计算的值越精确;换个角度讲,就是等式右边的项越多,计算的值越精确。

     

      3. 代码实现(python)

    from random import random
    from math import sqrt
    from time import *
    from tqdm import tqdm
    DARTS=10000000
    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("
    {:3}%".format(i/10*100)) #这里的i/10*100指每10%显示一次
        sleep((clock())/100)#用执行程序的总时间来算出进度条间隔的时间  
    print("pi的值{}.".format(pi))
    print("运行时间:{:.5f}s".format(clock()))

    4. 图片示例

    由上面2张图片可知,算1000W次只要8.20秒

  • 相关阅读:
    java程序高CPU,如何直接定位(linux系统下命令行操作)
    HashMap源码解读(jdk1.8)
    mysql索引原理
    redis常见问题
    Bitmap算法
    list遍历时删除的坑
    接口和抽象类有什么区别?各在什么场景下使用?
    记录BigInteger犯过的一个错误
    CentOS7切换源
    map遍历性能记录
  • 原文地址:https://www.cnblogs.com/lzz807237221/p/10568206.html
Copyright © 2011-2022 走看看