Maison >interface Web >tutoriel CSS >Mélange de tableaux avec l'algorithme Fisher-Yates en Java

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

Barbara Streisand
Barbara Streisandoriginal
2024-09-26 06:46:42687parcourir

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.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn