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 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.
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.
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