Heim  >  Artikel  >  Web-Frontend  >  Mischen von Arrays mit dem Fisher-Yates-Algorithmus in Java

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

Barbara Streisand
Barbara StreisandOriginal
2024-09-26 06:46:42616Durchsuche

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 gängige Operation, die in verschiedenen Anwendungen nützlich sein kann, von der Zufallsverteilung von Spielergebnissen bis hin zum Verteilen 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 eine Reihe von Ganzzahlen 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 Kodex
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.

Das obige ist der detaillierte Inhalt vonMischen von Arrays mit dem Fisher-Yates-Algorithmus in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn