Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann die zufällige Auswahl von Array-Elementen ohne Wiederholung optimiert werden?

Linda Hamilton
Freigeben: 2024-10-30 08:14:27
Original
465 Leute haben es durchsucht

How to Optimize Array Item Random Selection Without Repetition?

So verbessern Sie die Effizienz der zufälligen Auswahl von Array-Elementen

Wenn es darum geht, Array-Elemente zufällig auszuwählen und gleichzeitig Wiederholungen zu vermeiden, spielt Effizienz eine entscheidende Rolle. Während der bereitgestellte Code effektiv verhindert, dass dasselbe Element mehrmals hintereinander ausgewählt wird, besteht Potenzial für Leistungsverbesserungen.

Was die Frage der Rekursion betrifft, gilt die bereitgestellte Funktion technisch gesehen nicht als rekursiv, da sie sich nicht selbst aufruft direkt, sondern ruft sich selbst über eine andere Funktion auf (chooseName()). Allerdings weist es in seiner iterativen Natur Ähnlichkeiten mit rekursiven Funktionen auf.

Um die Effizienz zu verbessern, kann ein alternativer Ansatz gewählt werden, der das rekursive Verhalten eliminiert und den Zeitaufwand für die Suche nach eindeutigen Elementen erheblich reduziert. Bei dieser Strategie wird eine neue Funktion erstellt, die Elemente nach dem Zufallsprinzip auswählt, bis alle Elemente im Array erschöpft sind. Sobald alle Elemente verwendet wurden, beginnt die Funktion von vorne und stellt sicher, dass keine Elemente wiederholt werden.

Der folgende Code implementiert diesen Ansatz:

<code class="javascript">function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length < 1) { copy = array.slice(0); }
    var index = Math.floor(Math.random() * copy.length);
    var item = copy[index];
    copy.splice(index, 1);
    return item;
  };
}

var chooser = randomNoRepeats(['Foo', 'Bar', 'Gah']);
chooser(); // => "Bar"
chooser(); // => "Foo"
chooser(); // => "Gah"
chooser(); // => "Foo" -- only repeats once all items are exhausted.</code>
Nach dem Login kopieren

Durch die Verwendung dieses modifizierten Ansatzes können Sie kann Wiederholungen effektiv vermeiden und gleichzeitig eine effiziente Elementauswahl aufrechterhalten, ohne dass die Möglichkeit langwieriger Schleifeniterationen besteht, wie bei der rekursiven Implementierung.

Das obige ist der detaillierte Inhalt vonWie kann die zufällige Auswahl von Array-Elementen ohne Wiederholung optimiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!