Es gibt eine kurze Version mit der Funktion Array.sort ():
%Vor%Wenn Sie nicht "genug" Zufälligkeit bekommen, können Sie zweimal sortieren:)
EDIT - Erklärung Zeile für Zeile:
Für Array
-Klassenmethode sort()
können Sie nicht nur Sortieroptionen wie Array.CASEINSENSITIVE, Array.DESCENDING
usw. übergeben, sondern auch Ihre eigene benutzerdefinierte Vergleichsfunktionsreferenz (ein Callback), die zwei Parameter akzeptiert (zwei Elemente vom zu vergleichenden Array) . Aus der AS3-Dokumentation:
Eine Vergleichsfunktion sollte zwei Argumente zum Vergleichen haben. Bei den Elementen A und B kann das Ergebnis von compareFunction einen negativen, 0 oder positiven Wert haben:
- Ein negativer Rückgabewert gibt an, dass A vor B in der sortierten Sequenz erscheint.
- Ein Rückgabewert von 0 gibt an, dass A und B dieselbe Sortierreihenfolge haben.
- Ein positiver Rückgabewert gibt an, dass A nach B in der sortierten Sequenz erscheint.
Hinweis: Vergleiche Funktionsparameter könnten typisiert werden (wenn Ihr Array typisiert ist) und einen beliebigen Namen haben, zB:
%Vor% Diese Methode ist sehr nützlich, wenn Sie Array-Elemente nach ihren speziellen Eigenschaften sortieren müssen. In der Randomisierung gibt compareFunction
nach dem Zufallsprinzip -1, 0
oder 1
zurück und veranlasst Array-Elemente, ihre Plätze (Indizes) zu wechseln. Ich habe festgestellt, dass eine bessere Randomisierung (in meiner subjektiven und mathematisch nicht getesteten Meinung) ist, wenn die Methode nur -1
und 1
zurückgibt. Bedenken Sie auch, dass die Sortierfunktion mit der benutzerdefinierten Vergleichsfunktion Elemente nicht sequentiell vergleicht In einigen speziellen Fällen können die Randomisierungsergebnisse daher von den Erwartungen abweichen.
Es gibt einen besseren Weg, der es Ihnen auch ermöglicht, das Array an Ort und Stelle zu platzieren, wenn Sie das brauchen, und es wird Sie nicht mehr als eine einzige Kopie Ihres ursprünglichen Arrays erstellen lassen.
%Vor%Ich fand das sehr hilfreich. Ich hoffe, es kann dir auch helfen.
%Vor%Wählen Sie eine zufällige Zeichenfolge aus dem Array
%Vor%Verwendung:
%Vor%Tags und Links arrays flash random actionscript-3