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