算法:采用蒙特卡洛模拟,其基本思想是,在一个正方形内部画一个圆,然后随机生成大量的点,计算落在圆内的点的数量与总点数的比例,最后通过比例估算π的值
代码:
import random
import math
def estimate_pi(total_points):
inside_circle = 0
for _ in range(total_points):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = math.sqrt(x**2 + y**2)
if distance <= 1:
inside_circle += 1
# 计算进度并显示进度条
progress = (_ + 1) / total_points
bar_length = 50
block = int(round(bar_length * progress))
progress_str = "[" + "*" * block + " " * (bar_length - block) + "]"
print(f"\r{progress_str} {progress*100:.2f}%", end="")
pi_estimate = (inside_circle / total_points) * 4
return pi_estimate
# 设置总点数
total_points = 10000
# 估算π的值
pi_value = estimate_pi(total_points)
# 打印结果
print(f"\n估算的π值为: {pi_value}")
标签:total,Python,圆周率,points,计算,progress,estimate,pi,block From: https://www.cnblogs.com/0602cxh/p/17832658.html