Heim >Web-Frontend >js-Tutorial >Wie erstelle ich einen säbaren Zufallszahlengenerator in JavaScript?

Wie erstelle ich einen säbaren Zufallszahlengenerator in JavaScript?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 17:35:02576Durchsuche

How to Create a Seedable Random Number Generator in JavaScript?

Seedable JavaScript Random Number Generator

Die JavaScript Math.random()-Funktion generiert Zufallswerte zwischen 0 und 1 basierend auf der aktuellen Zeit, ähnlich dem Zufallszahlengenerator von Java. Es fehlt jedoch die Möglichkeit, einen Startwert anzugeben, um die Reihenfolge der generierten Zahlen zu steuern.

Erstellen eines benutzerdefinierten Zufallszahlengenerators mit Startwertunterstützung

So erstellen Sie einen Zufallszahlengenerator Zahlengenerator mit Seed-Unterstützung, ziehen Sie die folgenden Optionen in Betracht:

Implementierung eines linearen Kongruenzgenerators (LCG)

LCGs sind relativ einfach zu implementieren und bieten gute Zufälligkeitsqualitäten. Sie können die folgenden Konstanten verwenden:

m = 0x80000000; // 2**31
a = 1103515245;
c = 12345;

Hier ist eine Beispielimplementierung in JavaScript:

<code class="javascript">function RNG(seed) {
  this.m = 0x80000000;
  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>

Sie können diese RNG-Klasse erweitern, um zusätzliche Methoden wie nextFloat, nextRange und auswahlbasiert bereitzustellen auf dem LCG-Kern.

Nutzung von Bibliotheken für kurze setzbare RNGs

Bibliotheken wie [js-random](https://www.npmjs.com/package/ js-random) stellen kurze, startbare RNGs mit Optionen für verschiedene Algorithmen bereit.

Beispielimplementierung

Hier ist ein einfaches Beispiel mit einem LCG-basierten RNG:

<code class="javascript">var rng = new RNG(20);
for (var i = 0; i < 10; i++) {
  console.log(rng.nextRange(10, 50));
}</code>

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen säbaren Zufallszahlengenerator 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