¿Cómo mezclar una matriz en Java?
Hay dos enfoques para mezclar una matriz int (aleatoriza el orden de los elementos en una matriz), uno es usar el método Collections.shuffle () y el otro es manipular los elementos de la matriz.
Método 1: mezclar elementos en una matriz
Esto es flexible y fácil de cambiar para adaptarse a su aplicación.
Entrada: una matriz int
Salida: matriz barajada (en orden aleatorio)
public static int[] RandomizeArray(int[] array){ Random rgen = new Random(); // Random number generator for (int i=0; i<array.length; i++) { int randomPosition = rgen.nextInt(array.length); int temp = array[i]; array[i] = array[randomPosition]; array[randomPosition] = temp; } return array; } |
También puede definir un método cuya entrada sea un rango de la matriz como se muestra a continuación:
Entrada: rango de una matriz int
Salida: matriz mezclada aleatoriamente
Por ejemplo, dado a = 1 y b = 10, el método devuelve una matriz mezclada como {2 5 6 7 9 8 3 1 10 4}.
public static int[] RandomizeArray(int a, int b){ Random rgen = new Random(); // Random number generator int size = b-a+1; int[] array = new int[size]; for(int i=0; i< size; i++){ array[i] = a+i; } for (int i=0; i<array.length; i++) { int randomPosition = rgen.nextInt(array.length); int temp = array[i]; array[i] = array[randomPosition]; array[randomPosition] = temp; } for(int s: array) System.out.println(s); return array; } |
Enfoque 2: método Java Collection.shuffle ()
// Create an array Integer[] array = new Integer[]{1, 2, 3, 4}; //int[] array = new int[]{1, 2, 3, 4}; //does not work // Shuffle the elements in the array List<Integer> l = Arrays.asList(array); System.out.println(l); Collections.shuffle(l); System.out.println(l); |
El código anterior imprime una lista aleatoria de números enteros. Puede convertir a una matriz si se requiere una salida de matriz.