如果我将0传递给random.nextInt()会发生什么

时间:2012-05-23 03:53:33

标签: java

我正在使用java.util.random的nextInt函数来获取一个随机数,我注意到我的代码可能会将0传递给函数。我想知道在这种情况下结果会是什么。我猜它每次都会返回0,但我不确定。

2 个答案:

答案 0 :(得分:4)

如果传入零,它将抛出IllegalArgumentException

来自javadoc

  

<强>参数:   n - 要返回的随机数的界限。 必须是积极的。
  的返回:   下一个伪随机数,从该随机数发生器的序列中均匀分布在0(包括)和n(不包括)之间的int值   的抛出:   IllegalArgumentException - 如果n不是正面

答案 1 :(得分:4)

如果传递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;
}