随机生成不重复随机数

java的Random对象提供随机方法,可在指定范围内随机产生随机数

如:

//接收随机后的随机数集合
        List<Integer> ql = new ArrayList<Integer>();
        //随机对象
        Random random = new Random();
        int temp;
        //取5个随机数
        while(ql.size() < 5){
            //生成随机数,范围50以内
            temp = random.nextInt(50);
            //判断是否重复
            if(!ql.contains(temp)){
                ql.add(temp);
            }
        }
        System.out.println(ql);
    }

当需要将数组或集合中的某些数据随机抽取出来时,可通过上面方法将随机数作为下标依次取出数据

如:

        Question q1=new Question();
        q1.setTitle("测试1");
        Question q2=new Question();
        q2.setTitle("测试2");
        Question q3=new Question();
        q3.setTitle("测试3");
        Question q4=new Question();
        q4.setTitle("测试4");
        Question q5=new Question();
        q5.setTitle("测试5");
        
        List<Question> question=new ArrayList<Question>();
        question.add(q1);
        question.add(q2);
        question.add(q3);
        question.add(q4);
        question.add(q5);
//接收随机后的随机数集合 List<Integer> ql = new ArrayList<Integer>(); //随机对象 Random random = new Random(); int temp; //取5个随机数 while(ql.size() < 5){ //在数据集合大小范围内 temp = random.nextInt(question.size()); //判断是否重复 if(!ql.contains(temp)){ ql.add(temp); } }
//重新定义一个集合来接收随机后的数据 List<Question> lquestion=new ArrayList<Question>(); //根据所随机的下标集合,循环找到对应的数据集合中的值并重新get到新集合 for (int i = 0; i < ql.size(); i++) { lquestion.add(question.get(ql.get(i))); } //循环打印随机生成后的集合 for (int i = 0; i < lquestion.size(); i++) { System.out.println(lquestion.get(i)); }

这样就可以随机获取集合里面的5条数据了

注:如果是不重复的随机数,随机范围是不能小于所要获取的随机个数的

posted @ 2016-03-23 10:29  Angto  阅读(2544)  评论(0编辑  收藏  举报