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

将C算法转化为代码:随机坐标圆内判断条件咨询

用蒙特卡洛法估算π的圆内点判断条件

嘿,这个问题太经典了!咱们直接说核心:判断坐标(x,y)是否在圆心在原点、半径为1的单位圆内,靠勾股定理推导就行——点到原点的距离平方不超过半径的平方(这么做能避免开根号,计算更快)。

具体的判断代码逻辑是:

if (x*x + y*y <= 1) {
    numDartsInCircle += 1;
}

验证你给出的例子:

  • 对于点(-1, 1):计算得 (-1)*(-1) + 1*1 = 2,2 > 1,所以不在圆内,和你描述的一致。
  • 你提到的(-1, 0.5):这里其实计算结果是 (-1)*(-1) + 0.5*0.5 = 1.25,1.25 > 1,按道理这个点是在圆外的,可能是笔误啦?比如换成(-0.5, 0.5)的话,计算得0.25+0.25=0.5 ≤1,才会落在圆内~

小补充:

为啥用平方比较而不是直接算距离√(x²+y²)?因为开根号是相对耗时的运算,用平方对比的话,结果完全一致,但能让你的蒙特卡洛模拟跑起来更高效,尤其是当循环次数拉得很大的时候(比如你这里的1000次,甚至十万、百万次)。

把这个条件代入你的伪代码,最后用 (numDartsInCircle / 1000) * 4 就能得到π的估算值啦——原理很简单:正方形面积是4(边长2),单位圆面积是π,所以圆内点的占比≈π/4,反过来π≈4×占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:35:44