我是靠谱客的博主 独特烤鸡,最近开发中收集的这篇文章主要介绍JAVA Random类一、Random类基本介绍二、Random对象的两种生成方式三、Random类中的常用方法四、经典例题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、Random类基本介绍

二、Random对象的两种生成方式

三、Random类中的常用方法

3.1 基本方法

3.2 生成无限个int数据

3.3 toArray

四、经典例题

4.1 x到x平方 

4.2 1-5随机到1-7随机

4.3 等概率返回0和1

4.4 简单对数器


一、Random类基本介绍

Random类位于java.util包下,Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

二、Random对象的两种生成方式

Random r = new Random();
Random r1 = new Random(10);

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。

三、Random类中的常用方法

3.1 基本方法

Random random = new Random();
        System.out.println("nextInt():" + random.nextInt()); // 随机生成一个整数,这个整数的范围就是int类型的范围-2^31~2^31-1
        System.out.println("nextLong():" + random.nextLong()); // 随机生成long类型范围的整数
        System.out.println("nextFloat():" + random.nextFloat()); // 随机生成[0, 1.0)区间的小数
        System.out.println("nextDouble():" + random.nextDouble()); // 随机生成[0, 1.0)区间的小数
        System.out.println("nextBoolean():"+random.nextBoolean());//随机生成一个boolean值,生成true和false的值几率相等,也就是都是50%的几率
        System.out.println("nextGaussian():"+random.nextGaussian());//随机生成呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0
        byte[] byteArr = new byte[5];
        random.nextBytes(byteArr); // 随机生成byte,并存放在定义的数组中,生成的个数等于定义的数组的个数

3.2 生成无限个int数据

public static void main(String[] args) {
        Random random = new Random();
        random.ints(); // 生成无限个int类型范围内的数据,因为是无限个,这里就不打印了,会卡死的......
        random.ints(10, 100); // 生成无限个[10,100)范围内的数据

3.3 toArray

/**
         * 这里的toArray 是Stream里提供的方法
         */
        int[] arr = random.ints(5).toArray(); // 生成5个int范围类的整数。
        System.out.println(arr.length);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        // 生成5个在[10,100)范围内的整数
        arr = random.ints(5, 10, 100).toArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        /**
         * 对于 random.ints(); random.ints(ori, des);
         * 两个生成无限个随机数的方法,我们可以利用Stream里的terminal操作,来截断无限这个操作
         */
        // limit表示限制只要5个,等价于random.ints(5)
        arr = random.ints().limit(5).toArray();
        System.out.println(arr.length);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        // 等价于random.ints(5, 10, 100)
        arr = random.ints(10, 100).limit(5).toArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

四、经典例题

4.1 x到x平方 

任意x,x属于[0,1),[0,x)范围上的数出现的概率由原来的x调整成x平方

public static double XtoXpower(){
        return Math.max(Math.random(),Math.random());
    }

4.2 1-5随机到1-7随机

有一个方法f1()为从一到五等可能取一个数,现在此基础上改为一到七随机取出一个数

 public static int f1(){
        return (int)(Math.random() * 5) + 1;
    }

    public static int f2(){
        int ans = 0;
        do {
            ans = f1();
        }while (ans == 3);
        return ans < 3 ? 0 : 1;
    }

    public static int f3(){
        return (f2() << 2) + (f2() << 1) + (f2() << 0);
    }

4.3 等概率返回0和1

现已知方法x()会以固定概率返回0和1,但是x的内容未知,写出等概率返回0和1的方法

public static int x(){
        return Math.random() < 0.84 ? 0 : 1;
    }

    public static void f(){
        int ans = 0;
        do {
            ans = x();
        }while (ans == x());
        /*
        ans = 0 1
        ans = 1 0
        以上两种情况等概率
         */
    }

4.4 简单对数器

返回一个数组arr,arr长度[0,maxLen-1],arr中的每个值[0,maxValue-1]

public static int[] lenRandomValueRandom(int maxLen, int maxValue) {
		int len = (int) (Math.random() * maxLen);
		int[] ans = new int[len];
		for (int i = 0; i < len; i++) {
			ans[i] = (int) (Math.random() * maxValue);
		}
		return ans;
	}

最后

以上就是独特烤鸡为你收集整理的JAVA Random类一、Random类基本介绍二、Random对象的两种生成方式三、Random类中的常用方法四、经典例题的全部内容,希望文章能够帮你解决JAVA Random类一、Random类基本介绍二、Random对象的两种生成方式三、Random类中的常用方法四、经典例题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部