方法1,计算思维,用数学的方法求pi
程序如下:
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))
方法2,计算思维,蒙特卡洛方法,往正方形区域内循环撒点,统计落到⚪内的点的数量。
程序如下:
import random import time start=time.perf_counter() N=1000*10000 hits=0.0 for i in range(N): x,y= random.random(),random.random() if pow(x**2+y**2,0.5)<=1.0: hits=hits+1 pi=4*hits/N stop=time.perf_counter() print("圆周率为:{},所用时间:{}".format(pi,stop-start))
计算结果:
圆周率为:3.142066,所用时间:8.770343299999999
这些点产生的结果不够准确哦!