Java >> Tutoriel Java >  >> Java

Tableau de mélange Java | Exemple de programme de tableau aléatoire

Java Shuffle Array est une procédure pour randomiser les données. Comme vous le savez, Array est une collection de types de données similaires, comme une liste d'entiers ou de chaînes. Le brassage randomise les ensembles de données et la génération d'un ensemble de données aléatoire dans le tableau est différente.

Dans ce didacticiel, nous examinerons à la fois l'exemple de création d'un tableau aléatoire et de mélange d'un tableau en Java.

Exemple de tableau aléatoire Java

Une façon consiste à créer un tableau mélangé en utilisant l'algorithme "Fisher-Yates shuffle". Cet algorithme génère une séquence de nombres aléatoires en mélangeant les données sans manquer personne de la liste.

import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

public class Hello {
    public static void main(String args[])
    {
        int[] solutionArray = { 1, 2, 3, 4, 5, 6 };

        shuffleArray(solutionArray);
        for (int i = 0; i < solutionArray.length; i++)
        {
            System.out.print(solutionArray[i] + " ");
        }
        System.out.println();
    }

    // Implementing Fisher–Yates shuffle
    static void shuffleArray(int[] ar)
    {
        // If running on Java 6 or older, use `new Random()` on RHS here
        Random rnd = ThreadLocalRandom.current();
        for (int i = ar.length - 1; i > 0; i--)
        {
            int index = rnd.nextInt(i + 1);
            // Simple swap
            int a = ar[index];
            ar[index] = ar[i];
            ar[i] = a;
        }
    }
}

Sortie : 5 4 1 3 6 2

Mélangez les tableaux de chaînes Java

Un exemple supérieur que vous avez vu pour Integer Array, la même chose que vous pouvez faire avec un tableau String. Voir l'exemple ci-dessous pour cela. N'oubliez pas d'ajouter le paramètre de tableau de chaînes dans le shuffleArray méthode.

import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

public class Hello {
    public static void main(String args[])
    {
        String[] solutionArray = { "A", "B", "C", "D", "E", "F" };

        shuffleArray(solutionArray);
        for (int i = 0; i < solutionArray.length; i++)
        {
            System.out.print(solutionArray[i] + " ");
        }
        System.out.println();
    }

    // Implementing Fisher–Yates shuffle
    static void shuffleArray(String[] ar)
    {
        // If running on Java 6 or older, use `new Random()` on RHS here
        Random rnd = ThreadLocalRandom.current();
        for (int i = ar.length - 1; i > 0; i--)
        {
            int index = rnd.nextInt(i + 1);
            // Simple swap
            String a = ar[index];
            ar[index] = ar[i];
            ar[i] = a;
        }
    }
}

Sortie : E A B C F D

Mélangez les tableaux avec la méthode Java Collection.shuffle()

Vous pouvez mélanger Array en utilisant la méthode java collection .shuffle() . Pour cela, vous devez utiliser une classe Integer et convertir le tableau en ArrayList. Voir l'exemple de java shuffle ArrayList.

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Hello {
    public static void main(String args[]) {
        // Create an array
        Integer[] array = new Integer[]{1, 2, 3, 4};

        //int[] array = new int[]{1, 2, 3, 4}; //does not work

        // Shuffle the elements in the array
        List<Integer> l = Arrays.asList(array);
        System.out.println(l);

        Collections.shuffle(l);

        System.out.println(l);
    }
}

Sortie : [1, 2, 3, 4]
[4, 2, 1, 3]

Tableau aléatoire Java

Exemples supérieurs, vous avez vu le mélange du tableau Java où vous avez déjà un tableau puis un mélange. Et si vous voulez un tableau aléatoire dans une plage ? Vous pouvez le faire avec la classe Random Util comme mentionné ci-dessous.

public class Hello {
    public static void main(String args[])
    {
        java.util.Random r = new java.util.Random();
        int[] randomArray = r.ints(0, 10).limit(5).toArray();
        for (int i = randomArray.length - 1; i &gt; 0; i--)
        {
            System.out.print(randomArray[i] + " ");
        }
    }
}

Sortie : 3 8 2 0

Question : Comment mélanger le contenu d'un tableau ?

Réponse : c'est très simple comme la méthode Fisher-Yates mentionnée ci-dessus shuffle ou classe aléatoire. Faites un commentaire si vous avez une autre méthode pour le faire rapidement et de manière efficace.

Tout doute et exemple également commenté dans la section ci-dessous.


Remarque : Cet exemple (Project) est développé dans IntelliJ IDEA 2018.2.6 (Community Edition)
JRE :11.0.1
JVM :VM serveur OpenJDK 64 bits par JetBrains s.r.o
mac OS 10.14.1
Java 11
Tous Exemples sont en Java 11, il peut donc changer selon Java 9 ou 10 ou les versions mises à niveau.


Balise Java