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

Monte Carlo法结合JFrame实现Pi近似的Java程序点着色问题求助

问题排查与修复方案

你的代码存在3个核心错误,逐一修复即可实现预期效果:

  • 绘图逻辑顺序颠倒:你当前是先调用g.fillOval()绘制点,再调用g.setColor()设置颜色,这会导致当前点的颜色始终是上一个点的设置,完全不生效。正确顺序是先设置颜色,再绘制图形。
  • 采样坐标范围错误:如果你的圆是圆心在(250,250)、半径250的正圆,采样区域应该是x和y都在0500的正方形范围,你当前x仅取250500、y仅取0~250,只覆盖了1/4的采样区域,会导致Pi计算结果也出现偏差。
  • 圆内点判断逻辑完全错误:点在圆内的判定标准是「点到圆心的距离平方 ≤ 半径平方」,你写的applyformula == y || (y*y) - 500 * y < applyformula没有任何数学依据,直接替换为正确的判定条件即可。

修正后核心代码

// 采样范围覆盖0~500的完整正方形
for(int i = 0; i<1000; i++) {
    double x = Math.random() * 500;
    double y = Math.random() * 500;
    double disSquare = (x - 250)*(x - 250) + (y - 250) * (y - 250);
    // 半径250的平方为62500,小于等于则在圆内
    if(disSquare <= 62500) {
        g.setColor(Color.GREEN);
    } else {
        g.setColor(Color.RED);
    }
    // 先设颜色再绘制
    g.fillOval((int) x,(int) y, 5, 5);
}

如果不需要完整正方形采样,只需要采样右上四分之一区域计算Pi,可以把x和y范围都设为250~500,判定条件保持不变即可,最终计算Pi的时候对应调整系数就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:36:05