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

使用Monte-Carlo方法近似曲线下面积时函数输出精确值的问题排查

问题分析与修正

你的代码存在三个核心错误,导致它直接返回了该区间曲线下的精确面积(巧合的是,你错误计算的矩形面积刚好等于实际精确面积):

  • 未随机生成y值:蒙特卡洛方法需要在包含目标曲线的矩形区域内随机取点,你当前是直接计算y = x³,而非在y的有效取值范围(0到8,因为x最大为2时,y=2³=8)内随机生成y坐标。
  • 判断条件完全冗余:if y <= x³永远为真,因为y就是由x³计算而来,所以所有循环中的点都会被计入points_under_curve,最终比例恒为1。
  • 矩形总面积计算错误:包含曲线的矩形宽度为2(x从0到2),高度为8(y从0到8),总面积应为2*8,而非你写的2*2。

修正后的代码

import random

def monte_carlo_approximation(num_points):
    points_under_curve = 0
    # 定义包含曲线的矩形范围
    rect_width = 2
    rect_height = 8

    for _ in range(num_points):
        x = random.uniform(0, rect_width)
        # 在y轴范围内随机生成点的y坐标
        y_random = random.uniform(0, rect_height)
        # 判断随机点是否落在曲线下方
        if y_random <= x**3:
            points_under_curve += 1

    area_ratio = points_under_curve / num_points
    total_area = area_ratio * rect_width * rect_height
    return total_area 

效果说明

调用monte_carlo_approximation(500)时,会得到接近4的近似值(该区间曲线下的精确面积为∫₀²x³dx = 4),多次调用结果会在4附近波动,这才符合蒙特卡洛方法的近似特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:23:21