モンテカルロ法による円周率の計算

モンテカルロ法によってパイを計算すると満足する結果が得られない、なぜなのか。

n を 100000にして計算すると、時間がかかるので注意する。

void button1_MouseClicked(java.awt.event.MouseEvent event)
{
        Graphics g=getGraphics();
       
        for (i=1;i<=n;i++)
        {
            double x=Math.random(); //ランダムに x を発生する。
            double y=Math.random(); //ランダムに y を発生する。
            int x1=(int)(x*200);
            int y1=(int)(y*200);
           
            if (x*x+y*y<=1) //円内であれば
            {
                cnt++;    //カウントを増やす。
                g.setColor(Color.blue); //色を青にセットする。
                g.drawLine(x1+50,y1+50,x1+50,y1+50); //点を描画する。
            }
            else //円外であれば、
            {
                g.setColor(Color.white); //色を白にセットする。
                g.drawLine(x1+50,y1+50,x1+50,y1+50);
            }
           
            pi=4*cnt/i;     // 比を求めて4倍してパイを求める。     
           label2.setText(""+pi);
        }  
    }
}

BACK >>