-3

java.util.random の nextInt 関数を使用して乱数を取得していますが、コードが関数に 0 を渡す可能性があることに気付きました。この場合、どのような結果になるのか気になります。毎回0を返すだけだと思いますが、よくわかりません。

4

2 に答える 2

5

を渡すと実行時例外がスローされますn = 0

public int nextInt(int n) {
    if (n <= 0)
        throw new IllegalArgumentException("n must be positive");

    if ((n & -n) == n)  // i.e., n is a power of 2
        return (int)((n * (long)next(31)) >> 31);

    int bits, val;
    do {
        bits = next(31);
        val = bits % n;
    } while (bits - val + (n-1) < 0);
    return val;
}
于 2012-05-23T03:56:52.210 に答える
4

IllegalArgumentExceptionゼロを渡すと、がスローされます。

javadocから:

パラメータ: n - 返される乱数の範囲。正でなければなりません。
戻り値: この乱数ジェネレーターのシーケンスからの次の擬似乱数、一様に分散された 0 (含む) と n (含まない) の間の int 値
スロー: IllegalArgumentException -nが正でない場合

于 2012-05-23T03:55:32.003 に答える