„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich zufällige Array-Elemente ohne Wiederholungen effizient auswählen?

Wie kann ich zufällige Array-Elemente ohne Wiederholungen effizient auswählen?

Veröffentlicht am 20.11.2024
Durchsuche:769

How Can I Efficiently Select Random Array Items Without Repeats?

So wählen Sie Array-Elemente effizient und zufällig ohne Wiederholungen aus

Ihr Code erstellt ein Array aktueller Auswahlmöglichkeiten, um Wiederholungen zu verhindern, und ruft eine rekursive Funktion auf mit dem Namen „chooseName()“, wenn ein ausgewähltes Element in den letzten Auswahlmöglichkeiten enthalten ist. Dieser Ansatz gewährleistet Einzigartigkeit, kann jedoch zu einer Endlosschleife führen, wenn die Array-Größe begrenzt ist.

Ist es eine rekursive Funktion?

Ja, ChooseName() ruft sich selbst auf Finden Sie eine einzigartige Auswahl. Durch Rekursion kann die Funktion Array-Elemente durchlaufen, bis sie eines findet, das nicht in den letzten Auswahlmöglichkeiten enthalten ist.

Effizienz verbessern

Um Endlosschleifen zu vermeiden, sollten Sie einen alternativen Ansatz in Betracht ziehen vorgeschlagen in der Antwort:

function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length 

Diese Funktion generiert eine Kopie des ursprünglichen Arrays und wählt zufällig ein Element daraus aus. Sobald alle Elemente verwendet sind, wird eine neue Kopie des ursprünglichen Arrays erstellt, wodurch eine eindeutige Auswahl gewährleistet wird, selbst wenn das Array erschöpft ist.

Neuestes Tutorial Mehr>

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