各位大哥大姐,帮帮忙!写个一个数组,0-99的不重复乱序排列 用数组写哦
   我只知道用2个for循环,但是我就做不出来

解决方案 »

  1.   

    可以先弄一个HashSet出来,然后用(int)(Math.random()*100)方法给它赋值,这样就可以保证不重复了。
    然后把这个HashSet再赋值给你需要的那个数组,应该就可以了。
      

  2.   

    import java.util.*;   
    public class Randoms {   
           
        public static void main(String[] args) {   
               
            int [] seed = {0,2,3,4,5,6,7,8,9....99};   
            int [] ranArr = new int [100];   
            Random ran = new Random();   
            for(int i = 0 ; i<seed.length ; i++){   
                int j = ran.nextInt(seed.length-i);   
                ranArr [i] = seed [j];   
                seed [j] = seed [seed.length-1-i];   
                System.out.println ("ranArr[" + i + "]" + ":" + ranArr[i]);   
            }   
        }   
    }  
      

  3.   

    记得Thinking in java中有这个算法的
    BRUCE写了好些个这样的辅助类来帮助演示集合的。大家可以找找
      

  4.   

      这个方法很好。。顶一下import java.util.*;public class lihan{  
          
        public static void main(String[] args) {  
            int[] seed=new int[100];
            for(int k=0;k<100;k++)
            {
                seed[k]=k;
            }
            int [] ranArr = new int [100];      //定义目标数组
            Random ran = new Random();  
            for(int i = 0 ; i <seed.length ; i++){  
                int j = ran.nextInt(seed.length-i);  //任意取数组的一个下标,这里length-i写得很好
                ranArr [i] = seed [j];      //将取到的下标对应的具体元素复制给目标数组
                seed [j] = seed [seed.length-1-i];  //将原数组最后一个元素赋值给上面被取下标位置
                System.out.print (ranArr[i]+" ");  //输出目标数组
            }  
        }  
    }  
      

  5.   

    三楼的你这个赋值也太那个了!
    int [] seed = {0,2,3,4,5,6,7,8,9....99}; 
    我觉得一楼的有搞头。set可以避免重复。从set里放进数组
      

  6.   


    这是我想到其中最简单的方法。你看看
    import java.util.Random;public class Test { /*
     * 问题 各位大哥大姐,帮帮忙!写个一个数组,
     *  0-99的不重复乱序排列 用数组写哦 我只知道用2个for循环,但是我就做不出来
     */
    public static void main(String[] args) { int[] number = new int[100];// 存储 0 到 99 的数
    // 初始化
    for (int i = 0; i < number.length; i++) {
    number[i] = i;
    } int length = number.length;// 数组长度
    for (int i = length; i > 1; i--)
    swap(number, i - 1, new Random().nextInt(i)); // 将排序后的 number 数组打印出来
    for (int i = 0; i < number.length; i++) {
    System.out.println(number[i]);
    }
    } private static void swap(int[] arr, int i, int j) {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    }
    }
      

  7.   


    顶一下  随便实现下
    List<Integer> RandomNumList = new ArrayList<Integer>();public void getRandomNum(int n){

    Random r = new Random();
    boolean b = true;
    while(b){
    int temp = r.nextInt(n);
    if(!RandomNumList.contains(temp)) 
    RandomNumList.add(temp);
    if (RandomNumList.size() == n)
    b = false;

    }
    }
    我个人觉得这个想法蛮好  就是效率不是很高啊 完全看RP
    不过其实么  也是个好办法  只要n不是一个非常大的数
      

  8.   

    这个是我的方法,输出已经排序(也可以不排序)import java.util.*;
    public class random{
        public static void main(String[] args){
              int[] num = new int[100];
              for(int i=0; i<num.length;i++){
                    num[i] = (int) (Math.random()*100);
                 for(int j=0; j<i;j++){
                     if(num[i] == num[j]){
                        i--; 
                        break;
                         
              }       
           }
         
         }
     Arrays.sort(num);//数组排序
     System.out.println("随机数值:");
         for(int x:num)
            System.out.print( x +" ");     
            System.out.println();   
      }
     
    }