好好学Java:从零基础到项目实战
上QQ阅读APP看书,第一时间看更新

2.3.2 取随机数

取整只能对已有数字取整,概率统计却时常要求生成随机数,Math库虽然提供了制造随机数的random方法,但是该方法仅仅生成小于1的随机小数(包括0和正小数),并不能直接生成随机整数。

若想生成随机整数,则需引入专门的随机数工具Random,该工具实例化后可调用nextInt方法生成int类型的随机整数,调用nextLong方法生成long类型的随机长整数,调用nextFloat方法生成float类型的随机浮点小数,调用nextDouble方法生成double类型的随机双精度小数。特别注意,nextInt与nextLong方法得到的随机整数可能是负数,而nextFloat与nextDouble方法只会返回正的小数,不会返回负的小数。

因为int类型可表达的数值范围是-2147483648~2147483647,然而很多时候并不需要这么大的随机数,往往只需要比较小的随机数(如小于100的随机整数),所以此时调用nextInt方法要填写数值的上限,比如式子“new Random().nextInt(100)”表示生成100以内的随机整数(0≤随机整数<100)。

下面是获取各种随机数的代码例子(完整代码见本章源码的src\com\arithmetic\math\Rand.java):

double decimal=Math.random();  //生成小于1的随机小数(包括0和正小数)
System.out.println("decimal=" + decimal);
int integer=new Random().nextInt();  //生成随机整数(包括负数)
System.out.println("integer=" + integer);
long long_integer=new Random().nextLong();  //生成随机长整数(包括负数)
System.out.println("long_integer=" + long_integer);
float float_decimal=new Random().nextFloat();  //生成随机的浮点小数(不包括负数)
System.out.println("float_decimal=" + float_decimal);
double double_decimal=new Random().nextDouble();  //生成随机的双精度小数(不包括负数)
System.out.println("double_decimal=" + double_decimal);
int hundred=new Random().nextInt(100);  //生成100以内的随机整数(0≤随机整数<100)
System.out.println("hundred=" + hundred);