Heim >Web-Frontend >js-Tutorial >Wie erstelle ich einen konsistenten Zufallszahlengenerator in JavaScript?

Wie erstelle ich einen konsistenten Zufallszahlengenerator in JavaScript?

DDD
DDDOriginal
2024-11-04 09:26:02605Durchsuche

How to Create a Consistent Random Number Generator in JavaScript?

Erstellen eines speicherbaren JavaScript-Zufallszahlengenerators

Die Funktion Math.random() in JavaScript stellt automatisch eine Zufallszahl zwischen 0 und 1 bereit basierend auf der aktuellen Uhrzeit initialisiert. Es besteht jedoch Bedarf an einem Zufallszahlengenerator, der es benutzerdefinierten Startwerten ermöglicht, wiederholbare Folgen von Pseudozufallszahlen zu erzeugen.

Lösung:

Implementierung Bei einem Seeding-Zufallszahlengenerator muss ein geeigneter PRNG-Algorithmus (Pseudozufallszahlengenerator) ausgewählt werden, der Seeding unterstützt. Eine beliebte Option ist der Mersenne Twister-Algorithmus, der für seine hervorragende Zufälligkeit und lange Periode bekannt ist.

Die Implementierung von Mersenne Twister kann jedoch komplex sein. Für Anfänger empfiehlt sich eine Alternative wie ein linearer Kongruenzgenerator (LCG). LCGs sind einfach zu implementieren und bieten eine ordentliche Zufälligkeit, obwohl sie nicht so stark sind wie Mersenne Twister.

LCG-Implementierung (RNG-Klasse)

Der folgende Ausschnitt zeigt einen LCG Implementierung in JavaScript unter Verwendung der GCC-Konstanten:

<code class="javascript">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>

Verwendung:

Erstellen Sie eine Instanz der RNG-Klasse mit einem gewünschten Startwert:

<code class="javascript">var rng = new RNG(20);</code>

Zugriff auf zufällige Ganzzahlen:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextInt());</code>

Zufällige Gleitkommazahlen (0 bis 1) generieren:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextFloat());</code>

Zufallswerte innerhalb eines angegebenen Bereichs generieren:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50)); // Random integers between 10 (inclusive) and 50 (exclusive)</code>

Wählen Sie zufällige Elemente aus einem Array aus:

<code class="javascript">var digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
for (var i = 0; i < 10; i++)
  console.log(rng.choice(digits)); // Random digits from the array</code>

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen konsistenten 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