as3 zufälliges Array - randomize Array - ActionScript 3

7

Wie rufst du ein Array mit actionscript 3 an?

    
Papa De Beau 16.08.2012, 04:18
quelle

8 Antworten

17

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.

    
Rytis Alekna 16.08.2012, 07:45
quelle
2

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%     
user797257 16.08.2012 07:14
quelle
1

Ich hatte eine alternative Anforderung, bei der ich willkürlich viele Quell-Arrays zufällig in ein Ziel-Array einfügen wollte. Wie Rytis bin ich ein großer Fan der Funktionen forEach, map und sort auf Arrays.

%Vor%     
Emile 16.08.2012 15:41
quelle
1

Hier ist eine einfachere Funktion. Funktioniert auch auf mehrdimensionalen Arrays

%Vor%     
Tien Lu 13.09.2013 11:07
quelle
1

Ich fand das sehr hilfreich. Ich hoffe, es kann dir auch helfen.

%Vor%     
Papa De Beau 16.08.2012 04:19
quelle
0

Wenn Sie Ihr Array mischen müssen (Ihre Elemente können nicht wiederholt werden). Sie könnten diese Funktion verwenden:

%Vor%

Verwendung:

%Vor%     
Glogo 06.09.2014 17:16
quelle
0

so randomize ich mein Array von 36 Karten für ein Memory-Spiel

%Vor%     
Surtarso 15.12.2014 14:34
quelle
0

Wählen Sie eine zufällige Zeichenfolge aus dem Array

%Vor%

Verwendung:

%Vor%     
Mahdi Taleb 10.02.2016 11:43
quelle