0

コマンドライン引数を取る2次元のランダムウォークを書いています。ランダムウォークが開始点を中心とする2N×2Nの正方形の境界に到達するのにかかる時間を推定することになっています。

私がこれまでに得たものは次のとおりです。

public class RandomWalk 
{
    public static void main(String[] args) 
    {
        int N = Integer.parseInt(args[0]);
        int reps = Integer.parseInt(args[1]);
        int x = 0;       
        int y = 0;       
        double r;
        int steps = 0;

        while (x*x + y*y <= N*N) {
            steps++;
            r = Math.random();

            if      (r <= 0.25) x++;
            else if (r <= 0.50) x--;
            else if (r <= 0.75) y++;
            else if (r <= 1.00) y--;
        }

        System.out.println(steps);
   }

}

あなたたちが私がそれを間違っていると思うかどうかを確認したいだけです。

4

2 に答える 2

1

あなたの境界条件x*x + y*y <= N*Nは、正方形ではなく円を表しています。また、「ヒット」という言い回しは、条件に境界が含まれていないことを意味します ( <)。

あなたがしたいMath.abs(x) < N && Math.abs(y) < N

于 2012-09-06T18:29:37.910 に答える