估计值 ππ 使用蒙特卡洛飞镖: << 或者 ≤≤?

数据挖掘 数学 模拟 蒙特卡洛
2021-10-05 02:17:33

我试图弄清楚哪种是正确的估计方法 π 使用蒙特卡洛方法在一个正方形中随机分布点,该正方形还包含一个内切圆。

一些消息来源说使用比较 x2+y21, 而其他人使用 x2+y2<1.

                                          

这是来自维基百科文章的一些示例代码

def monte_carlo_pi(nsamples):
    acc = 0
    for i in range(nsamples):
        x = random.random()
        y = random.random()
        if (x**2 + y**2) < 1.0:
            acc += 1
    return 4.0 * acc / nsamples

而不是发布一长串使用 1 或者 <1,我已经制作了列表并将其存储在以下网站上:有关使用and的示例,请参见:socrates.iomarkdown.pressmarkdownshareless thanless than or equal to

1个回答

简短回答:两种表述都得出相同的答案。


数学解释

为了理解这一点,让我们看两个类似的问题。想象一下我们要集成一个功能f(x)=x2 在两个间隔 I1=[0,1] (包括两个边界)和 I2=(0,1) (不包括两个边界)。

为了 I1 我们有

01x2 dx=1/3.

对于第二个区间,我们需要引入一个正的虚拟参数 ε 然后我们可以计算积分为

limε00+ε1εx2 dx=1/3.

因此,两个区间之间的分隔线对积分(面积)没有贡献,因为它的宽度非常小。相同的论点可以应用于圆形区域。但是包括圆的线会使计算更容易,因为我们不需要引入虚拟变量。


数值解释

由于计算机的数值精度,生成的随机数不太可能导致真正在圆线上的点。在数值上,将不可能获得至少一个坐标是无理数的任何值。仅当两个值都是合理的并且如果x2+y2=1他们可以躺在圆圈上。但这种情况也极不可能。