算Π
本进度条是根据随机点的个数而改变的,落下一个点则更新一次,所以点越多,运行时间越长,该进度条可实现实时更新
方法亦是蒙特卡罗法
from random import random
from math import sqrt
import time
DARTS=100000**2
hits=0.0
start_time = time.perf_counter()
for i in range(1,DARTS+1):
x,y=random(),random()
dist=sqrt(x**2+y**2)
a = '*' * i
b = '.' * (DARTS - i)
c = (i / DARTS) * 100
end_time = time.perf_counter()
elapsed_time = end_time - start_time
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, elapsed_time), end='')
time.sleep(0.05)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print("Pi值是{}.".format(pi))

posted on 2023-10-31 08:53 huang123456789 阅读(33) 评论(0) 收藏 举报
浙公网安备 33010602011771号