圆周率计算
import randomdef monte_carlo_pi(n_points):
inside_circle = 0
for _ in range(n_points):
x = random.random()
y = random.random()
distance = x ** 2 + y ** 2
if distance <= 1:
inside_circle += 1
return 4 * inside_circle / n_points
# 投点 1000000 次
approx_pi = monte_carlo_pi(1000000)
print(f"使用蒙特卡罗方法计算的圆周率近似值: {approx_pi}") 使用蒙特卡洛方法计算圆周率(π)
你给出的代码是一个用蒙特卡洛方法估算圆周率的函数,但代码不完整。下面是完整的实现:
import random
def monte_carlo_pi(n_points):
inside_circle = 0
for _ in range(n_points):
x = random.random()
y = random.random()
distance = x ** 2 + y ** 2
if distance <= 1:
inside_circle += 1
return (inside_circle / n_points) * 4
# 示例:估算圆周率
print(monte_carlo_pi(1000000))
原理解释:
[*]在单位正方形内随机撒点(x, y),其中 x 和 y 都在 之间。
[*]如果点落在单位圆内(即 x^2 + y^2 <= 1),就计数。
[*]单位圆面积是 π/4,单位正方形面积是 1,所以圆内点的比例约为 π/4。
[*]最终用 (圆内点数 / 总点数) * 4 来估算 π。
这个方法简单直观,适合初学者理解概率与几何的结合。需要注意的是,点数越多,估算结果越精确。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-3-31 20:36
使用蒙特卡洛方法计算圆周率(π)
你给出的代码是一个用蒙特卡洛方法估算圆周率的函数,但代码不完整。 ...
谢谢指点 18093037081 发表于 2025-03-31 20:37
FishC 发表于 2025-3-31 20:36
使用蒙特卡洛方法计算 ...
使用蒙特卡洛方法计算圆周率(π)
你给出的代码片段中断在了 if distance 这一行,下面是完整的函数实现,用于估算圆周率:
import random
def monte_carlo_pi(n_points):
inside_circle = 0
for _ in range(n_points):
x = random.random()
y = random.random()
distance = x ** 2 + y ** 2
if distance <= 1:
inside_circle += 1
return 4 * inside_circle / n_points
# 示例调用
print(monte_carlo_pi(1000000))
原理简述:
蒙特卡洛方法通过在单位正方形内随机撒点,统计落在单位圆内的点的比例,来估算圆周率。因为单位圆面积是 πr^2(r=1),单位正方形面积是 1×1=1,所以:
π ≈ 4 × (圆内点数 / 总点数)
提示:
点数越多,估算结果越接近真实的 π 值。你可以尝试不同的 n_points 值来观察精度变化。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]