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