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,调用上述方法
}
posted @ 2021-08-26 21:44  valder-  阅读(104)  评论(0)    收藏  举报