„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Mischen von Arrays mit dem Fisher-Yates-Algorithmus in Java

Mischen von Arrays mit dem Fisher-Yates-Algorithmus in Java

Veröffentlicht am 07.11.2024
Durchsuche:931

Shuffling Arrays with the Fisher-Yates Algorithm in Java

Einführung

Im Bereich der Informatik ist das Mischen eines Arrays oder einer Liste von Elementen eine übliche Operation, die in verschiedenen Anwendungen nützlich sein kann, von der Zufallsverteilung von Spielergebnissen bis hin zur Verteilung von Karten in einem Stapel. Einer der effektivsten Algorithmen für diesen Zweck ist der Fisher-Yates Shuffle, auch bekannt als Knuth Shuffle. Dieser Algorithmus stellt sicher, dass jede Permutation des Arrays gleich wahrscheinlich ist, was ihn zu einer idealen Wahl für die Erstellung unvoreingenommener Zufallsmischungen macht.

In diesem Artikel untersuchen wir eine Java-Implementierung des Fisher-Yates Shuffle-Algorithmus. Der bereitgestellte Code mischt effizient ein Array von ganzen Zahlen an Ort und Stelle und demonstriert so sowohl die Eleganz als auch die Wirksamkeit dieses Algorithmus.

Der Fisher-Yates-Shuffle-Algorithmus

Der Fisher-Yates-Shuffle-Algorithmus durchläuft das Array vom Ende zum Anfang und tauscht dabei jedes Element durch ein zufällig ausgewähltes Element aus, das früher im Array erscheint (einschließlich der aktuellen Position). Dieser Prozess stellt sicher, dass alle Permutationen des Arrays gleich wahrscheinlich sind.

Java-Code-Implementierung

Hier ist eine Java-Implementierung des Fisher-Yates Shuffle-Algorithmus:

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));
    }
}

Erläuterung des Codes
Initialisierung:
Die Hauptmethode initialisiert ein Array von Ganzzahlen arr mit den Werten {1, 2, 3, 4, 5, 6} und ruft dann die Shuffle-Methode auf, um dieses Array zu mischen.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-yates-algorithm-in-java-28gc?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3