天天看点

生成长度为n,范围为[min, max)的随机数组

JDK1.8新增方法

public class RandomTest {
    /**
     * 测试Random类中 JDK1.8提供的新方法
     * JDK1.8新增了Stream的概念
     * 在Random中,为double, int, long类型分别增加了对应的生成随机数的方法
     * 鉴于每种数据类型方法原理是一样的,所以,这里以int类型举例说明用法
     */
    @Test
    public void test() {
        Random random = new Random();
        random.ints();  //生成无限个int类型范围内的数据,因为是无限个,这里就不打印了,会卡死的......
        random.ints(10, 100);   //生成无限个[10,100)范围内的数据
       
        /**
         * 这里的 toArray 是Stream里提供的方法
         */
        int[] arr = random.ints(10).toArray();  //生成10个int范围类的整数。
        System.out.println(arr.length);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
       
       
        //生成5个在[10,100)范围内的整数
        random.ints(5, 10, 100).forEach(System.out :: println); //这句话和下面三句话功能相同
        //forEach等价于:
        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表示限制只要10个,等价于random.ints(10)
        random.ints().limit(10).forEach(System.out :: println);
       
        //等价于random.ints(5, 10, 100)
        random.ints(10, 100).limit(5).forEach(System.out :: println);
        
		//生成5个[10,100)范围类的不重复整数
		random.ints(10, 100).distinct().limit(5).forEach(System.out :: println);
    }
   
}