请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。

分别以1、2、3作为种子数创建Random对象,生成六位随机密码进行测试。

具体输出要求请看测试说明。

测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:
1
预期输出:
NAvZuG

package case4;


import java.util.Random;
import java.util.Scanner;

public class RandomTest {
	public static void main(String[] args) {
		// 定义一个字符型数组
		char[] pardStore = new char[62];
		// 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
		/********* Begin *********/
        for(int i=0;i<26;i++){
            pardStore[i] = (char)('A'+i);
            pardStore[i+26] = (char)('a'+i);
        }
        for(int i=0;i<10;i++){
            pardStore[i+52] = (char)('0'+i);
        }
		/********* End *********/
		// 分别以1、2、3作为种子数 生成6位随机密码
		Scanner sc = new Scanner(System.in);
		int seed = sc.nextInt();
		/********* Begin *********/
        Random r = new Random(seed);
        String str = "";
        
        //生成6个在int范围内的0到62的随机数
        int [] arr = r.ints(6,0,62).toArray();        for(int i=0;i<6;i++){
            str+=pardStore[arr[i]];
        } 
        System.out.print(str);
		/********* End *********/
	}
}

Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:

package educoder;
import java.util.Random;
public class RandomTest {
    public static void main(String[] args) {
        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,并存放在定义的数组中,生成的个数等于定义的数组的个数
        System.out.print("nextBytes():");
        for (int i = 0; i < byteArr.length; i++) {
                System.out.print(byteArr[i]+"\t");
        }
        System.out.println();
       
        /**
         * random.nextInt(n) 
         * 随机生成一个正整数,整数范围[0,n),包含0而不包含n
         * 如果想生成其他范围的数据,可以在此基础上进行加减
         *
         * 例如: 
         * 1. 想生成范围在[0,n]的整数 
         *         random.nextInt(n+1) 
         * 2. 想生成范围在[m,n]的整数, n > m
         *         random.nextInt(n-m+1) + m 
         *         random.nextInt() % (n-m) + m 
         * 3. 想生成范围在(m,n)的整数
         *         random.nextInt(n-m+1) + m -1 
         *         random.nextInt() % (n-m) + m - 1 
         * ......主要是依靠简单的加减法
         */
        System.out.println("nextInt(10):" + random.nextInt(10)); 
        // 随机生成一个整数,整数范围[0,10)
       
        for (int i = 0; i < 5; i++) {
            System.out.println("我生成了一个[3,15)区间的数,它是:" + (random.nextInt(12) + 3));
        }
        /**
         * random.nextDouble() 
         * 例如:
         * 1.生成[0,1.0)区间的小数
         *         double d1 = random.nextDouble();//直接使用nextDouble方法获得。
         * 2.生成[0,5.0)区间的小数
         *           double d2 = random.nextDouble() * 5;//因为扩大5倍即是要求的区间。同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
         * 3.生成[1,2.5)区间的小数
         *         double d3 = r.nextDouble() * 1.5 + 1;//生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。
         * ......同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。
         * 
         */
        }
}
输出结果:
nextInt():1842341002
nextLong():4006643082448092921
nextFloat():0.88948154
nextDouble():0.5635189241159165
nextBoolean():false
nextGaussian():1.3191426544832998
nextBytes():36    100    94    14    -98    
nextInt(10):1
我生成了一个[3,15)区间的数,它是:5
我生成了一个[3,15)区间的数,它是:10
我生成了一个[3,15)区间的数,它是:10
我生成了一个[3,15)区间的数,它是:11
我生成了一个[3,15)区间的数,它是:6

JDK1.8新增方法:

package educoder;
import java.util.Random;
public class RandomTest2 {
    /**
     * 测试Random类中 JDK1.8提供的新方法 JDK1.8新增了Stream的概念 在Random中,为double, int,
     * long类型分别增加了对应的生成随机数的方法 鉴于每种数据类型方法原理是一样的,所以,这里以int类型举例说明用法
     */
    public static void main(String[] args) {
        Random random = new Random();
        random.ints(); // 生成无限个int类型范围内的数据,因为是无限个,这里就不打印了,会卡死的......
        random.ints(10, 100); // 生成无限个[10,100)范围内的数据
        /**
         * 这里的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]);
        }
    }
}
输出结果:
5
1801462452
-1812435985
-1073912930
1160255210
-1342018704
80
54
16
67
82
5
-1161610558
283052091
797550518
-275356995
-1661722790
11
27
27
52
54