1、Math.random()方法
在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即[0,1)虽然Math.random()方法只可以产生[0,1)之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
公式:(数据类型)(最小值+Math.random()*(最大值-最小值+1))
flag =(int)Math.floor(2*Math.random());//随机产生[0,2),再向下取整得0或1.
Math.random() 方法返回的随机数值类型为double型,就算与整型数字相乘扩大了数值范围,但是仍然会自动类型转换int->double。所以赋值给一个int类型变量,要使用强制转换。
2、Random类
除了Math类中的random()方法可以获取随机数之外,在Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。
语法如下:
Random r=new Random();
其中,r是指Random对象。
在Random类中提供了获取各种数据类型随机数的方法,下面举例几个常用的方法。
方法 | 说明 |
public int nextInt() | 返回一个随机整数。 |
public int nextInt(itn) | 返回大于等于0且小于n的随机整数。 |
public long nextLong() | 返回一个随机长整型值。 |
public boolean nextBoolean() | 返回一个随机布尔型值。 |
public float nextFloat() | 返回一个随机浮点型值。 |
public double nextDouble() | 返回一个随机双精度型值。 |
public double nextGaussian() | 返回一个概率密度为高斯分布的双精度值。 |
public static void main(String args[]){
// 实例化一个Random类
Random r = new Random();
// 随机产生一个整数
System.out.println("随机产生一个整数:" + r.nextInt());
// 随机产生一个大于等于0且小于10的整数
System.out.println("随机产生一个大于等于0且小于10的整数:" + r.nextInt(10));
// 随机产生一个布尔类型的值
System.out.println("随机产生一个布尔类型的值:" + r.nextBoolean());
// 随机产生一个双精度型的值
System.out.println("随机产生一个双精度型的值:" + r.nextDouble());
// 随机产生一个浮点型的值
System.out.println("随机产生一个浮点型的值:" + r.nextFloat());
// 随机产生一个概率密度为高斯分布的双精度值
System.out.println("随机产生一个概率密度为高斯分布的双精度值:" + r.nextGaussian());
}