java中随机函数的最大范围

时间:2016-03-20 04:08:20

标签: java random

在java中的这个随机函数

{{ form.errors }}

我想知道是否没有范围,整数和长期的随机函数的最大范围是什么

3 个答案:

答案 0 :(得分:2)

Integer.MIN_VALUE的范围是Integer.MAX_VALUE-2^312^31-1nextInt()),大约是Long.MIN_VALUELong.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;
}