Können Sie ein Array mit Array.sort() mischen?
Trotz anfänglicher Skepsis ist dies mit der Methode Array.sort() tatsächlich möglich Wird zum Array-Shuffling verwendet. So funktioniert es:
Vor- und Nachteile der Verwendung von Array.sort() zum Mischen
Vorteile:
Nachteile:
Messung der Zufälligkeit der Ergebnisse
Um die Zufälligkeit der Mischtechnik zu quantifizieren, kann man empirische Tests durchführen und die Ergebnisse mit erwarteten Werten vergleichen. Beispielsweise kann man die Wahrscheinlichkeit jeder möglichen Permutation berechnen und sie mit der Gleichverteilung vergleichen.
Alternativer Shuffling-Algorithmus (Fisher-Yates)
Bei Verwendung von Array. sort() ist praktisch, ein optimalerer und bekannterer Mischalgorithmus ist der Fisher-Yates shuffle:
function shuffle(array) { var tmp, current, top = array.length; if (top) while (--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp; } return array; }
Dieser Algorithmus ist sowohl effizient (O(n)) als auch garantiert eine gleichmäßige Verteilung der Ergebnisse.
Das obige ist der detaillierte Inhalt vonKann Array.sort() ein Array mischen, und wenn ja, wie zufällig ist es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!