以下是一个用蒙特卡罗方法计算圆周率的Python程序,可以输出逐步提高精度的过程:
import random import time def calc_pi_mc(num_points): circle_points = 0 total_points = 0 for i in range(num_points): x = random.uniform(-1, 1) y = random.uniform(-1, 1) distance = x ** 2 + y ** 2 if distance <= 1: circle_points += 1 total_points += 1 pi_estimate = 4 * circle_points / total_points print("%.10f" % pi_estimate) time.sleep(0.1) # 通过调用函数计算圆周率,并展示逐步提高精度的过程 calc_pi_mc(10000)
在这个程序中,我们使用蒙特卡罗方法来估算圆周率。我们随机生成一些点,并计算它们距离原点的距离。如果距离小于等于1,则将点计入圆内,否则计入圆外。我们不断生成新的随机点,直到达到指定数量。最后,我们将圆内点的数量除以总点数,并乘以4得到π的估计值。
在程序中,我们打印每个估计值,并在每次打印后等待0.1秒,以便我们可以看到逐步提高精度的过程。
请注意,由于蒙特卡罗方法的随机性质,每次运行的结果可能会有所不同。因此,在进行比较时,应该进行多次运行,并计算平均值。