Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie erstelle ich einen setzfähigen Zufallszahlengenerator in JavaScript?

Barbara Streisand
Freigeben: 2024-11-04 08:48:30
Original
785 Leute haben es durchsucht

How do I create a seedable random number generator in JavaScript?

Implementierung eines speicherbaren JavaScript-Zufallszahlengenerators

Es ist eine häufige Anforderung, eine Folge von Zufallszahlen in JavaScript zu generieren, aber die eingebauten In der Funktion Math.random() fehlt die Möglichkeit, einen bestimmten Startwert festzulegen. Dies kann problematisch sein, wenn wir eine bestimmte Zahlenfolge reproduzieren oder deterministische Zufälligkeit erzeugen möchten.

Verwendung eines benutzerdefinierten Zufallszahlengenerators

Um diese Einschränkung zu überwinden, können wir Implementieren Sie einen benutzerdefinierten Zufallszahlengenerator, der es uns ermöglicht, einen Startwert anzugeben. Hier ist ein Beispiel mit einem linearen Kongruentialgenerator (LCG):

<code class="js">function RNG(seed) {
  this.m = 0x80000000; // 2**31
  this.a = 1103515245;
  this.c = 12345;

  this.state = seed ? seed : Math.floor(Math.random() * (this.m - 1));
}
RNG.prototype.nextInt = function() {
  this.state = (this.a * this.state + this.c) % this.m;
  return this.state;
}</code>
Nach dem Login kopieren

Dieser LCG erzeugt eine Folge von ganzen Zahlen zwischen 0 und (2**31 - 1). Andere Arten von Zufallszahlengeneratoren, wie z. B. Mersenne Twister, bieten stärkere Zufälligkeitsgarantien, sind jedoch komplexer zu implementieren.

Einen Startwert festlegen

So legen Sie einen Startwert fest , können wir es als Argument an den RNG-Konstruktor übergeben:

<code class="js">var rng = new RNG(20);</code>
Nach dem Login kopieren

Dadurch wird der interne Zustand des Generators mit dem angegebenen Startwert initialisiert und sichergestellt, dass er eine wiederholbare Zahlenfolge erzeugt.

Verwendung des Zufallszahlengenerators

Der benutzerdefinierte RNG bietet die folgenden Methoden:

  • nextInt(): Erzeugt eine zufällige Ganzzahl zwischen 0 und (2* *31 - 1).
  • nextFloat(): Erzeugt eine zufällige Gleitkommazahl zwischen 0 und 1.
  • nextRange(start, end): Erzeugt eine Zufallszahl innerhalb eines angegebenen Bereichs ( inklusive Start, exklusives Ende).
  • choice(array): Wählt ein zufälliges Element aus einem Array aus.

Um beispielsweise eine Folge von Zufallszahlen zwischen 10 und 50 zu generieren:

<code class="js">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50));</code>
Nach dem Login kopieren

Zusätzliche Überlegungen

  • Berücksichtigen Sie die Eigenschaften und Einschränkungen des gewählten RNG, bevor Sie es verwenden.
  • Verwenden Sie Hilfsfunktionen rund um das RNG zur Vereinfachung seiner Verwendung, z. B. randRange(start, end) zum Generieren von Zahlen innerhalb eines bestimmten Bereichs.
  • Weitere Details und Verwendungsanweisungen finden Sie in der Dokumentation des RNG.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen setzfähigen Zufallszahlengenerator in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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