Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie generiert man effektiv nicht wiederkehrende Zufallszahlen in JavaScript?

Patricia Arquette
Freigeben: 2024-10-20 07:57:02
Original
724 Leute haben es durchsucht

How to Generate Non-Repeating Random Numbers in JavaScript Effectively?

Generieren sich nicht wiederholender Zufallszahlen in JS

Das Generieren sich nicht wiederholender Zufallszahlen in JS kann mithilfe verschiedener Techniken erreicht werden. Ursprünglich bestand der Ansatz darin, zu überprüfen, ob eine neu generierte Zahl bereits erstellt wurde, indem man sie einem Array hinzufügt und mit ihr vergleicht. Dies kann jedoch aufgrund übermäßiger rekursiver Aufrufe zu einem Fehler „Maximale Call-Stack-Größe überschritten“ führen.

Eine effiziente Lösung besteht darin, einmal eine zufällige Liste von Zahlen zu generieren und diese nacheinander abzuarbeiten. Dieser Ansatz macht rekursive Aufrufe überflüssig und garantiert keine Wiederholungen.

Hier ist ein Beispiel mit einem Fisher-Yates-Shuffle:

<code class="js">function shuffle(array) {
    var i = array.length,
        j = 0,
        temp;

    while (i--) {
        j = Math.floor(Math.random() * (i+1));
        temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}

var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);</code>
Nach dem Login kopieren

Alternativ können Generatoren für diesen Zweck verwendet werden:

<code class="js">function* shuffle(array) {
    var i = array.length;
    while (i--) {
        yield array.splice(Math.floor(Math.random() * (i+1)), 1)[0];
    }
}

var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);

ranNums.next().value; // first random number from array
ranNums.next().value; // second random number from array
...</code>
Nach dem Login kopieren

Diese Techniken bieten effiziente Möglichkeiten, sich nicht wiederholende Zufallszahlen in JavaScript zu generieren und so Probleme im Zusammenhang mit übermäßigen rekursiven Aufrufen zu beseitigen.

Das obige ist der detaillierte Inhalt vonWie generiert man effektiv nicht wiederkehrende Zufallszahlen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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!