圆周率的计算公式
#CalPiV1.py
pi=0
N=100
for k in range(N):
pi+=1/pow(16,k)*(\
4/(8**k+1)-2/(8*k+4)-\
1/(8*k+5)-1/(8*k+6))
print("圆周率值是:{}".format(pi))
\表示换行,与写在一行效果无异
简单的循环,程序不再逐行解释
#CaLP1V2.py
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
x,y=random(),random()
dist=pow(x**2+y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
逐行分析:
#CaLP1V2.py
from random import random
从random库中引入random函数
from time import perf_counter
从time库中引入perf_counter函数
DARTS=1000*1000
定义取点的数量,越多越精确
hits=0.0
给定计算在圆内点的变量的初始值
start=perf_counter()
给定程序运行的初始时间
for i in range(1,DARTS+1):
x,y=random(),random()
循环获取点的位置,且不需要给定种子
dist=pow(x**2+y**2,0.5)
计算点是否再圆内
if dist<=1.0:
hits=hits+1
在圆内则变量加一
pi=4*(hits/DARTS)
由于x,y都为正,所以仅计算了4分之一的圆,计算圆面积需要乘4
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
Python random库的使用_华泽的花的博客-CSDN博客
python(time库的使用)_华泽的花的博客-CSDN博客
在这里附上random库和time库的使用方法,如在逐行解释程序时有不理解的地方,欢迎来学习一下