Heim >Web-Frontend >js-Tutorial >Wie generiert man effektiv nicht wiederkehrende Zufallszahlen in JavaScript?

Wie generiert man effektiv nicht wiederkehrende Zufallszahlen in JavaScript?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-20 07:57:02810Durchsuche

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>

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>

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!

Stellungnahme:
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