Java 按随机顺序对列重新排序

Java 按随机顺序对列重新排序,java,Java,我正在尝试对2d数组的列进行随机重新排序,但到目前为止,它无法正常工作。如果有人能帮我展示一下我需要改变什么才能让它工作,我将非常感激。列当前的顺序是1到6,但我正在尝试将顺序随机化 package assignment8; /** * * @author kozit015 */ import java.util.Arrays; import java.util.Random; public class Assignment8 { /** * @param args the comm

我正在尝试对2d数组的列进行随机重新排序,但到目前为止,它无法正常工作。如果有人能帮我展示一下我需要改变什么才能让它工作,我将非常感激。列当前的顺序是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;
   }
包分配8;
/**
*
*@作者kozit015
*/
导入java.util.array;
导入java.util.Random;
公共课堂作业8{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
}公共静态空位折刀(){
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=newint[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);
Shuffleray(arrayCopy);
for(int i=0;i对于(int i=0;i来说,如果您将数组作为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;
   }
}

为什么不浏览
列表
并使用
Collections.shuffle()
?这可能是学校作业或他不能使用列表的东西。如果随机生成的索引等于
x
@fge,您可以进行优化并继续
。最初我只想给出一个简单而简短的解决方案,以便OP更容易理解。无论如何,我已经添加了该条件。没关系;)如果idx==x continue,我会编写
,但这当然是偏好的问题——最终JIT会将其编译成相同的格式code@fge是的,我知道你在想什么。但我想要一些变化。所以我写了;)
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