我正在尝试随机重新排序我的二维数组的列,到目前为止它还没有正常工作。如果有人能帮助告诉我我需要改变什么才能使它工作,我将非常感激。列目前的顺序为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;
}
}
}
答案 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