是否有一种简单的方法可以随机化二维数组中的列顺序?例如,我可以用它来随机化这个二维数组的列
int[][] dataArray = {{1, 1, 0, 1, 0, 0},
{0, 0, 1, 0, 1, 1},
{1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 1, 1}};
到目前为止,我一直试着运气不好。 我想要做的是使列1 2 3 4 5 6随机变成列2 3 1 6 5 4。 我已经尝试随机抽取数字并尝试使列符合顺序,但我似乎无法使其正常工作。
答案 0 :(得分:0)
你总是可以构造一维数组,随机化其内容,然后重建一个二维数组。
int[] newArray = new int[a.length + b.length + c.length + d.length];
// where a, b, c, and d are the smaller arrays inside dataArray
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);
System.arrayCopy(d, 0, newArray, a.length + b.length + c.length, d.length);
这将构造一个名为newArray
的一维数组,其中包含所有较小数组的内容。
现在将该数组随机化为here。
然后重建原始数组:
int newArray2d[][] = new int[5][4]; //do this dynamically based on the size of the first array.
for(int i=0; i<5;i++)
for(int j=0;j<4;j++)
array2d[i][j] = array1d[(j*10) + i];