18093037081 发表于 4 天前

圆周率计算

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
# 投点 1000000 次
approx_pi = monte_carlo_pi(1000000)
print(f"使用蒙特卡罗方法计算的圆周率近似值: {approx_pi}")

FishC 发表于 4 天前

使用蒙特卡洛方法计算圆周率(π)

你给出的代码是一个用蒙特卡洛方法估算圆周率的函数,但代码不完整。下面是完整的实现:

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 小助理,如未能正确解答您的问题,请继续追问。

18093037081 发表于 4 天前

FishC 发表于 2025-3-31 20:36
使用蒙特卡洛方法计算圆周率(π)

你给出的代码是一个用蒙特卡洛方法估算圆周率的函数,但代码不完整。 ...

谢谢指点

FishC 发表于 4 天前

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]
查看完整版本: 圆周率计算