Dans le domaine de l'informatique, mélanger un tableau ou une liste d'éléments est une opération courante qui peut être utile dans diverses applications, de la randomisation des résultats du jeu à la distribution de cartes dans un jeu. L’un des algorithmes les plus efficaces à cette fin est le Fisher-Yates Shuffle, également connu sous le nom de Knuth Shuffle. Cet algorithme garantit que chaque permutation du tableau est également probable, ce qui en fait un choix idéal pour créer des mélanges aléatoires impartiaux.
Dans cet article, nous explorerons une implémentation Java de l'algorithme Fisher-Yates Shuffle. Le code fourni mélange efficacement un tableau d'entiers en place, démontrant à la fois l'élégance et l'efficacité de cet algorithme.
L'algorithme Fisher-Yates Shuffle fonctionne en itérant sur le tableau de la fin au début, en échangeant chaque élément avec un élément choisi au hasard qui apparaît plus tôt dans le tableau (y compris la position actuelle). Ce processus garantit que toutes les permutations du tableau sont également probables.
Voici une implémentation Java de l'algorithme 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)); } }
Explication du Code
Initialisation :
La méthode main initialise un tableau d'entiers arr avec les valeurs {1, 2, 3, 4, 5, 6} puis appelle la méthode shuffle pour mélanger ce tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!