14595

[code]

    import java.util.Random;
    
    class 
    {
        public static void main(String[] args)
        {
            Random rand;        //Randomクラス型変数の宣言
            // システム時刻を擬似乱数の種としたRandomインスタンスの生成
            rand = new Random(System.currentTimeMillis());
            int numSquare;          //正方形内の点の個数
            numSquare = 1000000;    //100万個
            int numSector;          //扇形内の点の個数
            numSector = 0;
            double x, y;
            int i;
            for (i = 0; i < numSquare; i++)
            {
                x = rand.nextDouble();      // x座標の決定
                y = rand.nextDouble();      // y座標の決定　※※
                // 点が扇形内にあるかを調べる
                if(Math.sqrt(x * x) + Math.sqrt(y * y) < 1) // ※※
                {
                    numSector++;
                }
            }
            double pi;              //円周率の近似値
            pi = 4.0 * numSector / numSquare;
            System.out.println("[円周率の近似値] " + pi);
        }
    }
    
[/code]

※（表示される浮動少数は毎回異なる）  
～実行結果～

[code]

    [円周率の近似値] 3.142388
    
[/code]

実行結果のようにしたいのですがこのプログラムで実行すると2.0008など2付近にしかならないのですがこれは正しいのでしょうか？  
円周率の近似値なので3.14にちかい数字だとはおもうのですがどうすればいいですか？  
間違っているとすれば `※※` のところだと思います。  
よろしくお願いします＞＜


CC BY-SA 3.0
2015-08-18T12:15:49.490
14594
2015-08-18T12:22:35.633
2015-08-18T12:22:35.633
8000
10962
question
java
円周率シミュレーション（モンテカルロ法）の結果を出力したいです。

[code]

            if (Math.sqrt(x * x + y * y) < 1)
    
[/code]

これが正解ではないでしょうか。


CC BY-SA 3.0
2015-08-18T12:20:48.877
14595
2015-08-18T12:20:48.877
9873
14594
answer