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 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.
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.
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