"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Mélange de tableaux avec l'algorithme Fisher-Yates en Java

Mélange de tableaux avec l'algorithme Fisher-Yates en Java

Publié le 2024-11-07
Parcourir:869

Shuffling Arrays with the Fisher-Yates Algorithm in Java

Introduction

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 de lecture aléatoire de Fisher-Yates

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.

Implémentation du code Java

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.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-yates-algorithm-in-java-28gc?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3