Random类
Random类
是随机数生成器
Random r = new Random();
以这种方式实例化对象是,系统会以当前时间作为随机数生成器的种子产生的时间一般不同,运行太快,就可能会相同,也可以在实例化对象时设置随机数生成器的种子
Random r = new Random(seed);
有种子的生成器多次生成的随机数顺序数值都一样
实例如下
import java.util.Random;
public static void main(String[] args) {
Random r1 = new Random(10);
System.out.println("输出一个[0,10)的数组");
for (int i = 0; i < 10; i++) {
System.out.print(r1.nextInt(10)+" ");
}
System.out.println();
Random r2 = new Random(10);
System.out.println("输出另一个[0,10)的数组");
for (int i = 0; i < 10; i++) {
System.out.print(r2.nextInt(10)+" ");
}
}
/*
输出一个[0,10)的数组
3 0 3 0 6 6 7 8 1 4
输出另一个[0,10)的数组
3 0 3 0 6 6 7 8 1 4
*/
常用方法
| 方法 | 功能 |
|---|---|
| public int nextInt() | 返回一个随机整数 |
| public int nextInt(int n) | 返回大于等于0且小于n的随机整数 |
| public long nextLong() | 返回一个随机长整数型 |
| public boolean nextBoolean() | 返回一个随机布尔型值 |
| public float nextFloat() | 返回一个随机单精度浮点型值 |
| public double nextDouble() | 返回一个随机双精度浮点型值 |
| public double nextGaussian() | 返回一个概率密度为高斯分布的双精度浮点型值 |
示例如下
import java.util.Random;
public static void main(String[] args) {
Random r = new Random();
System.out.println("随机产生一个整数:"+r.nextInt());
System.out.println("随机产生一个大于等于0且小于10的整数:"+r.nextInt(10));
System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());
System.out.println("随机产生一个单精度浮点型的值:"+r.nextFloat());
System.out.println("随机产生一个双精度浮点型的值:"+r.nextDouble());
System.out.println("随机产生一个概率密度为高斯分布的双精度浮点型的值:"+r.nextGaussian());
/*
每次运行结果都不一样
随机产生一个整数:146473314
随机产生一个大于等于0且小于10的整数:2
随机产生一个布尔型的值:false
随机产生一个单精度浮点型的值:0.7784107
随机产生一个双精度浮点型的值:0.5823911388399665
随机产生一个概率密度为高斯分布的双精度浮点型的值:-0.3945212973088456
*/
}
注:random方法返回的只是伪随机数
练习
获取2~32(不包括32)中的6个偶数,并求得这6个偶数的和
public static double EvenNum(double num1,double num2){
double sum=0;
int count=0;//数字个数
while(true){
int tmp=(int)num1+(int)(Math.random()*(num2-num1));//在2到32中随意选一个数字
//选出六个偶数
if (tmp!=0&&tmp%2==0){
System.out.println("打印2到32的偶数(不包括32)"+tmp);
sum+=tmp;
count++;
}
//停止选择
if (count==6){
break;
}
}
return sum;
}
public static void main(String[] args) {
System.out.println("和为:"+EvenNum(2,32));//num1=2,num2=32,调用上述方法
}

浙公网安备 33010602011771号