"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Mezcla de matrices con el algoritmo de Fisher-Yates en Java

Mezcla de matrices con el algoritmo de Fisher-Yates en Java

Publicado el 2024-11-07
Navegar:792

Shuffling Arrays with the Fisher-Yates Algorithm in Java

Introducción

En el ámbito de la informática, barajar una matriz o lista de elementos es una operación común que puede ser útil en diversas aplicaciones, desde aleatorizar los resultados del juego hasta distribuir cartas en una baraja. Uno de los algoritmos más eficaces para este propósito es Fisher-Yates Shuffle, también conocido como Knuth Shuffle. Este algoritmo garantiza que cada permutación de la matriz sea igualmente probable, lo que lo convierte en una opción ideal para crear combinaciones aleatorias imparciales.

En este artículo, exploraremos una implementación Java del algoritmo Fisher-Yates Shuffle. El código proporcionado mezcla eficientemente una serie de números enteros, lo que demuestra tanto la elegancia como la eficacia de este algoritmo.

El algoritmo aleatorio de Fisher-Yates

El algoritmo Fisher-Yates Shuffle opera iterando sobre la matriz desde el final hasta el principio, intercambiando cada elemento con un elemento elegido al azar que aparece antes en la matriz (incluida la posición actual). Este proceso garantiza que todas las permutaciones de la matriz sean igualmente probables.

Implementación de código Java

Aquí hay una implementación Java del algoritmo Fisher-Yates Shuffle:

import java.util.*;

class FYShuffleAlgorithm {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6};

        shuffle(arr);
    }

    public static void shuffle(int[] arr) {
        Random rand = new Random();
        for (int i = arr.length - 1; i > 0; i--) {
            int randomIndex = rand.nextInt(i   1);
            int tmp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = tmp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

Explicación del Código
Inicialización:
El método principal inicializa una matriz de números enteros con los valores {1, 2, 3, 4, 5, 6} y luego llama al método aleatorio para mezclar esta matriz.

Declaración de liberación Este artículo se reproduce en: https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-yates-algorithm-in-java-28gc?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3