圆周率实例

蒙特卡罗方法

定义初始pi
定义循环数量(累加)
产生每一个k,对于每一个k增加到最初的pi上
如果代码太长用“ \”换行

程序运行步骤

1、调用time中的perf_counter对程序运行及时
2、定义总数量1000*1000
3、设计变量⚪内部
4、设计变量启动计时
5、对所有点进行抛散
6、使用x,y取随机坐标值
7、点到圆心距离是否为1
8、如果圆心距离小于1.0点在⚪的内部hits变量+1
9、得出的值比上散点值
10、输出打印pi
11、输出运行时间 起始-结束

公式运行

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))

圆周率值是:3.141592653589793

优化用计算机得出

from random import random
from time import perf_counter
DARTS = 1000*1000
hits = 0.0
start = perf_counter()
for i in range(1, DARTS):
    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}".format(perf_counter() - start))

输出
圆周率得出:3.141764
运行时间是:0.62156

思维

当没有数学规则时,采用计算机方法
使用time库的计时方法获得程序运行时间
改变散点数量,理解程序运行时间的分布
初步掌握简单的程序性能分析方法

发布了11 篇原创文章 · 获赞 0 · 访问量 73

猜你喜欢

转载自blog.csdn.net/kyra1997/article/details/105125954