按随机顺序重新排序列

时间:2014-12-11 18:07:20

标签: java

我正在尝试随机重新排序我的二维数组的列,到目前为止它还没有正常工作。如果有人能帮助告诉我我需要改变什么才能使它工作,我将非常感激。列目前的顺序为1到6,但我试图随机化顺序。

package assignment8;

/**
 *
 * @author kozit015
 */
import java.util.Arrays;
import java.util.Random;
public class Assignment8 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

}public static void jackknife(){
    int[]a= {1, 1, 0, 1, 0, 0};
    int[]b= {0, 0, 1, 0, 1, 1};
    int[]c= {1, 1, 1, 1, 1, 1};
    int[]d= {0, 0, 0, 0, 1, 1};
    int[] newArray = new int[a.length + b.length + c.length]; 
    System.arrayCopy(a, 0, newArray, 0, a.length);
    System.arrayCopy(b, 0, newArray, a.length, b.length);
    System.arrayCopy(c, 0, newArray, a.length + b.length, c.length);

    shuffleArray(arrayCopy);
     for (int i = 0; i < arrayCopy.length; i++)
{
     System.out.print(arrayCopy[i] + " ");
}


    int newArray2d[][] = new int[5][4]; 
    for(int i=0; i<5;i++)
      for(int j=0;j<4;j++)
        newArray2d[i][j] = array1d[(j*10) + i]; 



}static void shuffleArray(int[] ar){

    Random rnd = new Random();
    for (int i = ar.length - 1; i > 0; i--)
    {
      int index = rnd.nextInt(i + 1);

      int a = ar[index];
      ar[index] = ar[i];
      ar[i] = a;
   }

}
    }

1 个答案:

答案 0 :(得分:0)

最好将阵列作为 2D阵列,然后使用循环将其洗牌。

int[][] myArray = { {1,2,3}, {4,5,6}, {7,8,9} };

您可以使用循环进行随机播放,而不是在拥有2D数组后手动对其进行随机播放。

Random rnd = new Random();

//shuffle rows/cols
for(int x=0; x<myArray.length; x++)
{
   int idx = rnd.nextInt(myArray.length);
   if(idx != x){
       int[] temp = myArray[x];
       myArray[x] = myArray[idx];
       myArray[idx] = temp;
   }
}

代码测试:

for(int x=0; x<myArray.length; x++){
    for(int y=0; y<myArray[0].length; y++)
        System.out.print(myArray[x][y]);
    System.out.println("");
}

<强>输出:

4 5 6
7 8 9
1 2 3