"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Embaralhando matrizes com o algoritmo Fisher-Yates em Java

Embaralhando matrizes com o algoritmo Fisher-Yates em Java

Publicado em 2024-11-07
Navegar:224

Shuffling Arrays with the Fisher-Yates Algorithm in Java

Introdução

No domínio da ciência da computação, embaralhar uma matriz ou lista de elementos é uma operação comum que pode ser útil em várias aplicações, desde a randomização de resultados de jogos até a distribuição de cartas em um baralho. Um dos algoritmos mais eficazes para esse propósito é o Fisher-Yates Shuffle, também conhecido como Knuth Shuffle. Este algoritmo garante que cada permutação da matriz seja igualmente provável, o que o torna uma escolha ideal para criar embaralhamentos aleatórios imparciais.

Neste artigo, exploraremos uma implementação Java do algoritmo Fisher-Yates Shuffle. O código fornecido embaralha com eficiência uma matriz de números inteiros, demonstrando a elegância e a eficácia desse algoritmo.

O algoritmo de embaralhamento de Fisher-Yates

O algoritmo Fisher-Yates Shuffle opera iterando sobre a matriz do final ao início, trocando cada elemento por um elemento escolhido aleatoriamente que aparece anteriormente na matriz (incluindo a posição atual). Este processo garante que todas as permutações da matriz sejam igualmente prováveis.

Implementação de código Java

Aqui está uma implementação Java do 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));
    }
}

Explicação do Código
Inicialização:
O método principal inicializa um array de inteiros arr com os valores {1, 2, 3, 4, 5, 6} e então chama o método shuffle para embaralhar esse array.

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-tates-algorithm-in-java-28gc?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3