Heim Web-Frontend js-Tutorial Wie können wir zufällige Array-Elemente ohne Wiederholung effizient auswählen?

Wie können wir zufällige Array-Elemente ohne Wiederholung effizient auswählen?

Oct 31, 2024 am 10:41 AM

How Can We Efficiently Select Random Array Items Without Repetition?

Effiziente zufällige Auswahl von Array-Elementen ohne Wiederholung

In diesem Artikel untersuchen wir ein Problem, mit dem Benutzer konfrontiert sind, die nach einer effizienten Methode zur zufälligen Auswahl suchen Elemente aus einem Array ohne Wiederholung. Der bereitgestellte Code wählt effektiv Elemente aus, führt jedoch aufgrund der Verwendung einer rekursiven Funktion die Möglichkeit einer Endlosschleife ein.

Rekursive Funktion?

Die Funktion ChooseName() kann als rekursiv betrachtet werden, da es sich innerhalb seiner Definition auf sich selbst bezieht. Die Beendigungsbedingung ist die Entdeckung eines eindeutigen Elements, bei dem „unique“ auf „false“ gesetzt ist, wodurch die Schleife unterbrochen und der Funktionsaufruf erneut gestartet wird.

Verbesserung der Effizienz

Zur Verbesserung Effizienz betrachten wir einen alternativen Ansatz, der vom Kommentator @YuriyGalanter vorgeschlagen wurde. Anstatt uns auf eine rekursive Funktion zu verlassen, können wir Elemente zufällig aus dem Array auswählen und sie in einem temporären Array speichern. Sobald alle Elemente ausgewählt sind, setzen wir das temporäre Array zurück und fahren mit dem zufälligen Auswahlprozess fort.

Implementierung

Die folgende Implementierung beinhaltet diesen Ansatz:

<code class="javascript">function randomNoRepeats(array) {
  var copy = array.slice(0);
  return function() {
    if (copy.length &lt; 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(); // =&gt; "Bar"
chooser(); // =&gt; "Foo"
chooser(); // =&gt; "Gah"
chooser(); // =&gt; "Foo" -- only repeats once all items are exhausted.</code>
Nach dem Login kopieren

Durch die Verwendung dieser Funktion können Elemente nach dem Zufallsprinzip ausgewählt werden, ohne dass die Möglichkeit einer Endlosschleife besteht, und gleichzeitig werden Wiederholungsprobleme vermieden.

Das obige ist der detaillierte Inhalt vonWie können wir zufällige Array-Elemente ohne Wiederholung effizient auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Ersetzen Sie Stringzeichen in JavaScript

Benutzerdefinierte Google -Search -API -Setup -Tutorial Benutzerdefinierte Google -Search -API -Setup -Tutorial Mar 04, 2025 am 01:06 AM

Benutzerdefinierte Google -Search -API -Setup -Tutorial

Beispielfarben JSON -Datei Beispielfarben JSON -Datei Mar 03, 2025 am 12:35 AM

Beispielfarben JSON -Datei

8 atemberaubende JQuery -Seiten -Layout -Plugins 8 atemberaubende JQuery -Seiten -Layout -Plugins Mar 06, 2025 am 12:48 AM

8 atemberaubende JQuery -Seiten -Layout -Plugins

10 JQuery Syntax Highlighters 10 JQuery Syntax Highlighters Mar 02, 2025 am 12:32 AM

10 JQuery Syntax Highlighters

Erstellen Sie Ihre eigenen AJAX -Webanwendungen Erstellen Sie Ihre eigenen AJAX -Webanwendungen Mar 09, 2025 am 12:11 AM

Erstellen Sie Ihre eigenen AJAX -Webanwendungen

Was ist ' this ' in JavaScript? Was ist ' this ' in JavaScript? Mar 04, 2025 am 01:15 AM

Was ist ' this ' in JavaScript?

10 JavaScript & JQuery MVC -Tutorials 10 JavaScript & JQuery MVC -Tutorials Mar 02, 2025 am 01:16 AM

10 JavaScript & JQuery MVC -Tutorials

See all articles