Java 按随机顺序对列重新排序
我正在尝试对2d数组的列进行随机重新排序,但到目前为止,它无法正常工作。如果有人能帮我展示一下我需要改变什么才能让它工作,我将非常感激。列当前的顺序是1到6,但我正在尝试将顺序随机化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
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