円周率シミュレーション(モンテカルロ法)の結果を出力したいです。
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);
}
}
※(表示される浮動少数は毎回異なる)
~実行結果~
[円周率の近似値] 3.142388
実行結果のようにしたいのですがこのプログラムで実行すると2.0008など2付近にしかならないのですがこれは正しいのでしょうか?
円周率の近似値なので3.14にちかい数字だとはおもうのですがどうすればいいですか?
間違っているとすれば ※※
のところだと思います。
よろしくお願いします><