En este post sobre Java te mostraré cómo mezclar un arreglo, es decir, ordenar los elementos de un arreglo de manera aleatoria.
Mezclar un arreglo en Java sirve para varias cosas, por ejemplo, si cuentas con una lista de canciones o una lista de cosas que necesitas que tengan un orden distinto.
Como sea, al final vamos a obtener un arreglo ordenado de manera aleatoria o mejor dicho, un arreglo desordenado. Y nunca tendrá el mismo orden, pues los elementos van a ser organizados al azar.
Lo que tenemos que hacer para aleatorizar un arreglo en Java es simplemente recorrer el arreglo en cuestión y en cada paso mover un elemento a una posición aleatoria.
Para obtener el número aleatorio vamos a usar ThreadLocalRandom que en pocas palabras devuelve un número aleatorio; usaremos esta función para obtener un índice aleatorio.
public static int getRandomNumber(int min, int max) {
// nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
return ThreadLocalRandom.current().nextInt(min, max + 1);
}
Entonces el código completo queda así:
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// Primero lo imprimimos de manera original
System.out.println("Original:");
for (int value : array) System.out.print(value + " ");
for (int currentIndex = 0; currentIndex < array.length; currentIndex++) {
// Restamos 1 de array.length porque los índices comienzan en 0
int randomIndex = getRandomNumber(0, array.length - 1);
// Hacemos el intercambio...
// Almacenamos el actual en una temporal
int temp = array[currentIndex];
// Al actual le colocamos lo que haya en un índice aleatorio
array[currentIndex] = array[randomIndex];
// Y lo que había en el índice aleatorio lo remplazamos por lo que hay en temporal
array[randomIndex] = temp;
}
// Y al final lo volvemos a imprimir, ya desordenado
System.out.println("\nDesordenado");
for (int value : array) System.out.print(value + " ");
}
public static int getRandomNumber(int min, int max) {
// nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
return ThreadLocalRandom.current().nextInt(min, max + 1);
}
}
Como puedes ver, primero se imprime el arreglo original. Luego lo recorremos y en cada iteración obtenemos un índice aleatorio para intercambiar los elementos.
Finalmente imprimimos el arreglo de nuevo y sus elementos ya van a estar desordenados. En este caso fue un arreglo de tipo int
pero puede ser un arreglo de cualquier tipo.
También puedes aprender más sobre Java.
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Esta web usa cookies.