Heim >Web-Frontend >js-Tutorial >Wie kann ich Zufallszahlengeneratoren in JavaScript setzen?

Wie kann ich Zufallszahlengeneratoren in JavaScript setzen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-03 06:24:14598Durchsuche

How Can I Seed Random Number Generators in JavaScript?

Seeding des Zufallszahlengenerators in JavaScript

Das integrierte Math.random() in JavaScript bietet nicht die Möglichkeit, Seeds zu erstellen Zufallszahlengenerator, was bedeutet, dass er nicht mit einem bestimmten Wert initialisiert werden kann, um eine vorgegebene Folge von Zufallszahlen zu generieren.

Während Seeding mit nicht möglich ist Math.random() gibt es externe Bibliotheken und Implementierungen, die benutzerdefinierte Funktionen zum Generieren setzfähiger Pseudozufallszahlen bieten. Hier sind einige Optionen:

Pseudozufallszahlengenerator-Funktionen (PRNG)

Mehrere kompakte und effiziente PRNG-Funktionen können in JavaScript implementiert werden und liefern qualitativ hochwertige Zufallszahlen kann mit einer oder mehreren 32-Bit-Zahlen geimpft werden.

Seed Initialisierung

Es ist wichtig, Ihre PRNGs richtig zu initialisieren, um Seeds mit niedriger Entropie zu vermeiden, die die Zufälligkeit der generierten Zahlen beeinträchtigen können. Hier sind zwei gängige Methoden:

  • Hash-Funktionen: Hash-Funktionen können Seeds aus kurzen Strings generieren, sodass Sie einen String als Seed verwenden können. Beispielsweise kann die Hash-Funktion cyrb128 einen 128-Bit-Hash-Wert aus einer Zeichenfolge erzeugen.
  • Auffüllen von Dummy-Daten: Alternativ können Sie den Seed mit Dummy-Daten auffüllen und den Generator a vorantreiben einige Male, um den Ausgangszustand gründlich zu vermischen.

PRNG Algorithmen

Hier ist ein Beispiel für den sfc32-Algorithmus (Simple Fast Counter), der einen 128-Bit-Zustand hat und Zufallszahlen im Bereich 0-1 erzeugt:

function sfc32(a, b, c, d) {
  return function() {
    a |= 0; b |= 0; c |= 0; d |= 0;
    let t = (a + b | 0) + d | 0;
    d = d + 1 | 0;
    a = b ^ b >>> 9;
    b = c + (c << 3) | 0;
    c = (c << 21 | c >>> 11);
    c = c + t | 0;
    return (t >>> 0) / 4294967296;
  }
}

Das obige ist der detaillierte Inhalt vonWie kann ich Zufallszahlengeneratoren in JavaScript setzen?. 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