我现在将65个单词(有重复)分别定义给一个65位的一维数组。现在从中随机取出24个,怎样保证24个中没有重复取得?

解决方案 »

  1.   

    String s[65]={};
    String sk[24];//要得的数组
    for(int i=0;i<s.length;i++)

    for(int j=0;j<s.length;j++)
    if (!s[i].equals(s[j])){
    sk[]=s[i];
    }else{
    break;
    }
    }
      

  2.   


    String[] array65={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64"};
    // array65初始化 array65 = {,,,,,,.....};
    String[] array24=new String[24];
    int count = 0;
    boolean flag = false;
    while(count<24){
    System.out.println(count);
    int random = (int)(Math.random()*65);

    for(int j=0;j<array24.length;j++){
    if(array65[random].equals(array24[j])){
    flag = true;
    continue;
    }
    }
    if(!flag){
    array24[count]=array65[random];
    System.out.print(array24[count]+",");
    count++;
    }

    }
    效率级差,期待好点的算法
      

  3.   

    Random r = new Random();
    ArrayList<String> list = new ArrayList<String>(25);
    String[] array65={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64"};
    while (list.size() < 24) {
      int nIdx = r.nextInt(65);
      if (list.indexOf(array65[nIdx]) < 0) {
        list.add(array65[nIdx]);
      }
    }
    String[] results =list.toArray(new String[list.size()]) ;
    System.out.println(Arrays.asList(results));