nextInt()函数
nextInt()函数是Java.util包下的一种随机数生成函数,该函数可以生成指定范围内的整数随机数,是Java中常用的方法之一之一。下面将对nextInt()函数进行详细解释。
1.函数语法
public int nextInt()
返回一个随机数,该数是在此函数初始化时设置的范围内生成的。范围默认为整数的所有可能值(即,[-2147483648, 2147483647])。
2.函数实现原理
nextInt()函数是通过生成伪随机数来实现的。伪随机数是通过计算机的算法生成的数列,虽然不是真正的随机数,但是在应用中够用。
Java中的生成伪随机数的算法是线性同余算法。线性同余算法是一种基于模运算的算法,对于给定的种子(随机数生成的起点),该算法能够依次生成一组伪随机数。
Java.util.Random类使用的线性同余算法公式为:
n = (n * 0x5DEECE66D + 0xB) & ((1L << 48) - 1)
其中n为上一次生成的随机数,0x5DEECE66D和0xB是常数,(1<<48)-1是一个掩码,将运算结果限制在48位以内,保证结果是long整数类型。
3.函数使用方法
nextInt()函数有两种使用方法。一种是不需要任何参数,生成范围是[-2147483648, 2147483647],例如:
Random random = new Random();
System.out.println(random.nextInt());
另一种方法是传入一个参数,可以指定生成的随机数的范围,例如:
Random random = new Random();
System.out.println(random.nextInt(100)); //生成0-99之间的随机数
4.函数注意事项
1)nextInt()函数生成的随机数是伪随机数,并不是真正的随机数。
2)nextInt()函数生成的随机数是随机分布的。
3)nextInt()函数生成的随机数可能重复,因此,如果需要生成随机不重复数,可以在生成数的同时将该数从可选择数的集合中删除,避免重复。
5.函数实例
下面的例子展示了如何使用nextInt()函数生成指定范围内的随机数:
import java.util.Random;
public class TestRandom {
public static void main( String args[] ) {
// create random object
Random randomno = new Random();
// get next next boolean value
boolean value1 = randomno.nextBoolean();
// get next next double value
double value2 = randomno.nextDouble();
// get next next Gaussian value
double value3 = randomno.nextGaussian();
// get next next integer value
int value4 = randomno.nextInt();
// get next next integer value within 50
int value5 = randomno.nextInt(50);
// output values
System.out.println("Next boolean value: "+value1);
System.out.println("Next double value: "+value2);
System.out.println("Next Gaussian value: "+value3);
System.out.println("Next integer value: "+value4);
System.out.println("Next integer value from 0 to 49: "+value5);
}
}
输出结果为:
Next boolean value: false
Next double value: 0.9136068910351035
Next Gaussian value: 0.17217432066581278
Next integer value: 437616495
Next integer value from 0 to 49: 21
可以看到,通过调用nextInt()函数,生成了不同类型的随机数。其中value5指定了生成的随机数范围是0-49。
