例:int[] intTest = {1,2,3,4,5};
输出结果随机(5,4,2,1,3)或(3,2,1,5,4)等等。

解决方案 »

  1.   

    for循环,然后用随机函数取就行了。
      

  2.   

    Random random = new Random();
    for (int i=intTest.lenth;i>0,i--){
       int j=intTest[random.nextInt(i)]
       System.out.println(j);
       //TODO 移除当前数组元素
    }至于移除数组元素的方法,有几种。这是我想的两种……
    //第一种
     List list = new ArrayList(Arrays.asList(intTest));   
     list.remove(i);   
     intTest=list.toArray(); //第二种
    逐个传给一个新的数组
      

  3.   

    //TODO 移除当前数组元素移除了还重复?
      

  4.   

    Random random = new Random();
    for (int i=intTest.lenth;i>0,i--){
       int j=intTest[random.nextInt(i)]
       System.out.println(j);
       List list = new ArrayList(Arrays.asList(intTest));   
       list.remove(i);   
       intTest=list.toArray(); 
    }把他写全了给你八
      

  5.   

    不好意思啊,我考过去抱错啊,是不是你没有编译一下阿??asList(Object)。list.toArray()也是Object的阿
      

  6.   

    恩,是不是jdk原因阿,我用的是1.5版本。
      

  7.   

    intTest=list.toArray(); 
    这一步是有问题,我也只是写出来,并没有调试。
    但是原理是这样给出来了,就差的是调试了。
      

  8.   

    Arrays.asList(intTest)也有问题的。帮忙再看看了。
      

  9.   

    int[] intTest = {1,2,3,4,5};
    int N=5,temp;
    java.util.Random ran = new java.util.Random();
    for(int i=0;i<100;i++)
    {
    int j=ran.nextInt(N);
    temp=intTest[j];
    intTest[j]=intTest[N-j-1];
    intTest[N-j-1]=temp;
    } System.out.print("("+intTest[0]);
    for(int i=1;i<N;i++)
    {
    System.out.print(" , "+intTest[i]);
    }
    System.out.println(")");
      

  10.   

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;public class Main {    public static void main(String[] args) {
            Object[] intTest = { 1, 2, 3, 4, 5 };
            Random random = new Random();
            for (int i = intTest.length; i > 0; i--) {
                int k=random.nextInt(i);
                Object j = intTest[k];
                System.out.println(j);
                List list = new ArrayList(Arrays.asList(intTest));
                list.remove(k);
                intTest = list.toArray();
            }
        }}
      

  11.   

    malligator(不能再整天泡在CSDN里了!) 你的方法,是随机产生一个数,然后以这个数给间隔,交换元素的位置。但是不能实现平均的随机,只会出现特定的随机。
      

  12.   

    可以啊,所有数据类型都是属于Object的。你需要的话再换成int就行了。
      

  13.   

    你创建一个Main雷,把我那段CO过去运行就可以了。
      

  14.   

    是啊,我就是这样过去,就出错,用malligator的方法已经解决了,不过还是想研究你的方法。
      

  15.   

    Object[] intTest = { "1", "2", "3", "4", "5" };
    List list = new ArrayList();
    for (int i = 0; i < intTest.length; i++) {
    list.add(i, intTest[i]);
    } for (int i = 0; i < intTest.length; i++) {
    double random = Math.random();
    int temp = (int) (random * (intTest.length - i));
    //System.out.println("tintTest.length-i=" + (intTest.length - i)
    // + "\ttemp=" + temp); System.out.println(list.get(temp));
    list.remove(temp); }
    }
      

  16.   

    Object[] intTest = { "1", "2", "3", "4", "5" };
    List list = new ArrayList();
    for (int i = 0; i < intTest.length; i++) {
    list.add(i, intTest[i]);
    } for (int i = 0; i < intTest.length; i++) {
    double random = Math.random();
    int temp = (int) (random * (intTest.length - i));

    System.out.println(list.get(temp));
    list.remove(temp); }
    }
      

  17.   

    import java.util.Random;public class test2 {
    public static void main(String args[]) {
    RandomTest();
    }

    // 数组自由排列
    public static void RandomTest(){
    Random ran = new Random();
    int a[] = { 1, 2, 3, 4, 5 ,6,7,8,9};
    int b[] = new int[a.length];
    int w = a.length;
    int x = 0;
    int y;

    for (int i = 0; i < a.length; i++) {
    y = 0;
    x = Math.abs(ran.nextInt()) % w;
    // 把随机选中的数,提出来,然后省下数重新排列数组
    for (int j = 0; j < w; j++) {
    if (x == j) {
    b[i] = a[x];
    continue;
    }
    a[y] = a[j];
    y++;
    }
    w--;
    System.out.print("~" + b[i] + "~");
    }
    }
    }
      

  18.   

    import java.util.*;
    public class TestRandom 
    {
        static Random ran = new Random();
    static int[] intTest = {1,2,3,4,5};
    public static int[] createRandom(int n){
    int[] result = new int[n];
        boolean[] picked = new boolean[n];
    for(int i = 0;i<n;i++){
    int t;
    do
    {
    t = ran.nextInt(n);
    }
    while (picked[t]);
    result[i] = intTest[t];
    picked[t] = true;
    }
    return result;
    }
    public static void main(String[] args){
    int[] a = createRandom(intTest.length);
    System.out.println(Arrays.toString(a));
    }
    }
    试试这个
      

  19.   

    Integer[] intTest = {1,2,3,4,5};
            List<Integer> list=new ArrayList<Integer>();
            for(Integer a:intTest)
                list.add(a);
            Collections.shuffle(list);
            Integer[] ret=list.toArray(new Integer[0]);
            System.out.println(list);
      

  20.   

    Integer[] intTest = {1,2,3,4,5};
            List<Integer> list=new ArrayList<Integer>();
            for(Integer a:intTest)
                list.add(a);
            Collections.shuffle(list);
            Integer[] ret=list.toArray(new Integer[0]);
            System.out.println(list);
    ---------------------------------
    高手啊
      

  21.   

    >>treeroot(旗鲁特) 高手呀
    我也写了一个^-^public class TestRan{    public static void main(String[] args) {
            
            int[] intTest = {1, 2, 3, 4, 5};
            
            List list = new ArrayList();
            
            for(int i = 0; i < intTest.length; i ++){
                list.add(Integer.valueOf(intTest[i]));
            }
            
            Collections.shuffle(list);
            
            for(int i = 0; i < list.size(); i ++){
                System.out.println("the " + i + " element is :" + list.get(i));    
            }
            
        }
    }
      

  22.   

    int array[]={ 2,5,2,6,9};
    Random random = new Random();
    for( int i=0; i<array.length; i++){
    int index = random.nextInt(i+1);
    int temp = array[i];
    array[i] = array[index];
    array[index]= temp;
    }
    for(int i=0; i<array.length; i++){
    System.out.print(array[i]);
    }
      

  23.   

    public static int[] test(int[] arr) {

    int[] arr1 = new int[arr.length];
    boolean[] SSSwitch = new boolean[arr.length];
    Random rand = new Random();

    for(int i = 0; i < arr.length; ++i) {

    int j;

    do
    j = rand.nextInt(arr.length);
    while(SSSwitch[j]);

    arr1[i] = arr[j];
    SSSwitch[j] = true;
    }

    return arr1;
    }楼主试下这个。
      

  24.   

    原来看thinking in java的时候里边的一个算法。
    本来想想个原创出来的,可是次方法在我脑中挥之不去,哎~~
      

  25.   

    呵呵~学到东西了~
    class  Jie
    {
    public static void main(String args[]){     
       int a[] = {1,2,3,4,5};   
       final int A=5;
       Random r = new Random();
       
       for (int i=0;i<10 ;i++ )
       {
        int j=r.nextInt(A);
    int k=r.nextInt(A);
    int x= a[j];
    a[j]=a[k];
    a[k]=x;
       }
            for( int i=0;i<a.length;i++)
          System.out.print( a[i]+" ");
    }
    }
      

  26.   

    import java.util.*;
    public class a {
    public static void main(String args[]){
    int data[]={1,2,3,4,5};
    ArrayList ar=new ArrayList();
    for(int i=0;i<data.length;i++){
    ar.add(data[i]);
    }
    Collections.shuffle(ar,new Random());
    System.out.println(ar);
    }
    }
      

  27.   

    本人自己做了个,不用ArrayList或Vector,只用了一个Math.random(),比较容易理解,而且适合于各种各样长度类型的一维数组。因为工作需要,所以要等到下周才公布,记得提醒俺。
      

  28.   

    虽然工作没找到,但我还是得遵守承诺,把程序发上来,大家仔细看看哈,有问题或bug回复我哦。本人使用动态随机数组String[] arraywant,把它打乱顺序输出。这个String[] arraywant可以随意换成任何类型及长度的一维数组,故通用性极强。
    import java.util.*;
    import java.lang.Math;
    public class RadomArray {
     public static int[] test(int[] arr)
     {
      int LAN=arr.length;
      int n=0,i=0;
      int[] arr1=new int[LAN];
      boolean[] flag=new boolean[LAN];
      for(i=0;i<LAN;i++){
       flag[i]=false;
       }  
      for(i=0;i<LAN;i++)
      {
       int j=(int)(Math.random()*LAN);
       if(flag[j]==false)
       {    
        arr1[i]=arr[j];//随机抽取一个arr元素给arr1
        flag[j]=true;
        ++n;
       }
       else if(n==LAN)break;
        else i--;   
      }
      return arr1;
     }
     public static void main(String[] args) {
      int i=0;  
      String[] arraywant={
        "杨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",
      };
      int LEN=arraywant.length;
      int[] array1=new int[LEN]; //array1是个排序好的数组  
      for(i=0;i<LEN;i++)
      {   
       array1[i]=i;
      }
      int[] array2=RadomArray.test(array1);  //调用打乱的方法,产生一个打乱的数组
      for(i=0;i<LEN;i++)
      {
       int n=array2[i];
       System.out.println("第"+(i+1)+"位是:"+arraywant[n]);
      }  
     }
    }