在java中的这个随机函数
{{ form.errors }}
我想知道是否没有范围,整数和长期的随机函数的最大范围是什么
答案 0 :(得分:2)
Integer.MIN_VALUE
的范围是Integer.MAX_VALUE
到-2^31
(2^31-1
到nextInt()
),大约是Long.MIN_VALUE
到Long.MAX_VALUE
-2^63
的{{1}}到2^63-1
}。
来自Random (Java Platform SE 8 )
public int nextInt()
[...]所有2 32 可能的int值以(近似)相等的概率产生。
[...]
public long nextLong()
[...]
方法nextLong由Random类实现,如下所示:
nextLong()
答案 1 :(得分:0)
根据java文档。
random.nextInt()
从该随机数生成器的序列返回下一个伪随机,均匀分布的int值。因此,最大值将是int
的限制,即2^31-1
如果要设置界限,可以使用nextInt(int bound)
。返回从此随机数生成器序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间。
长时间,最大值为2^63-1
答案 2 :(得分:0)
您可以从grepcode
中找到更多详情public int nextInt() {
return next(32);
}
/*
* @param n the bound on the random number to be returned. Must be
* positive.
* @return the next pseudorandom, uniformly distributed {@code int}
* value between {@code 0} (inclusive) and {@code n} (exclusive)
* from this random number generator's sequence
* @exception IllegalArgumentException if n is not positive
* @since 1.2
*/
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;
}