You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Monte Carlo simulation估算π结果偏高问题排查

错误原因

你的代码存在明确逻辑错误,和内置函数精度无关,错误点如下:

  • 落点判定逻辑完全错误:蒙特卡洛估算π的核心是判断随机生成的点是否落在单位圆内,正确判定条件为点到圆心的距离平方小于等于半径平方(即x² + y² ≤ 1),你代码中计算x*y和落点判定没有任何关联。
  • 存在循环论证问题:你在判定阈值中直接使用了math.pi计算圆面积,相当于提前把正确π值代入了估算逻辑,完全违背了蒙特卡洛方法的设计初衷。
  • 坐标范围不符合要求:random.random()生成的是[0,1)区间的随机数,而单位圆的外接正方形坐标范围是[-1,1],需要对生成的随机数做线性转换才能覆盖整个正方形区域。

修正后代码

import random

TOTAL_POINTS = 1000000

def main():
    number_of_hits = 0
    for _ in range(TOTAL_POINTS):
        # 将[0,1)区间的随机数转换为[-1,1)区间
        x = 2 * random.random() - 1
        y = 2 * random.random() - 1
        # 判断点是否落在单位圆内
        if x ** 2 + y ** 2 <= 1:
            number_of_hits += 1
    print("pi is approximately", 4 * number_of_hits / TOTAL_POINTS)

main()

修正后运行得到的π估算值会在3.14附近浮动,符合预期。

内容的提问来源于stack exchange,提问作者KishuInu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:39:04