如何将双色球随机取出来而不重复,在不使用集合的情况下。求教,学习!

解决方案 »

  1.   

    貌似这个前几天我刚遇到代码如下:package test;import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;public class DoubleBalls {
    public static void main(String[] args) {
    String[] balls=new String[]{"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19",
    "20","21","22","23","24","25","26","27","28",};
    boolean[] used=new boolean[balls.length];
    List<String> picked=new ArrayList<String>();
    Random ra=new Random();
    int n=7;//这里是要取的个数
    while(true){
    int a=ra.nextInt(balls.length);
    if(used[a])
    continue;
    else{
    picked.add(balls[a]);
    used[a]=true;
    }
    if(picked.size()==n)
    break;
    }
    System.out.println(picked);
    }}
      

  2.   

    终于做出来了,谢谢各位!
    public static String[] gen(){
        String[] pool = {"01","02","03","04","05","06","07",
            "08","09","10","11","12","13","14","15","16",
            "17","18","19","20","21","22","23","24","25",
            "26","27","28","29","30","31","32","33"};
        boolean[] used = new boolean[pool.length];//使用标记
        Random r = new Random();
        String[] balls = new String[6];//空白数组
        int i = 0;
        while(true){
          int index = r.nextInt(pool.length);//随机下标
          if(used[index])//检查下标是否使用过
            continue;//重新执行循环, 生成新的随机数
          balls[i++]=pool[index];//取出一个球到 balls 数组
          used[index]=true;//标识使用了
          if(i==balls.length)//检查是否都取满了
            break;
        }