Maison >interface Web >js tutoriel >Comment créer un générateur de nombres aléatoires cohérent en JavaScript ?
Création d'un générateur de nombres aléatoires JavaScript amorçables
La fonction Math.random() en JavaScript fournit automatiquement un nombre aléatoire entre 0 et 1 initialisé en fonction de l’heure actuelle. Cependant, il existe un besoin pour un générateur de nombres aléatoires qui permette aux valeurs de départ définies par l'utilisateur de produire des séquences répétables de nombres pseudo-aléatoires.
Solution :
Mise en œuvre un générateur de nombres aléatoires amorçables implique de choisir un algorithme de générateur de nombres pseudo-aléatoires (PRNG) approprié qui prend en charge l'amorçage. Une option populaire est l'algorithme Mersenne Twister, connu pour son excellent caractère aléatoire et sa longue période.
Cependant, la mise en œuvre de Mersenne Twister peut être complexe. Pour les débutants, une alternative comme un générateur congruentiel linéaire (LCG) est recommandée. Les LCG sont simples à mettre en œuvre et offrent un caractère aléatoire décent, bien qu'ils ne soient pas aussi puissants que Mersenne Twister.
Implémentation LCG (classe RNG)
L'extrait suivant démontre une LCG implémentation en JavaScript à l'aide des constantes de GCC :
<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>
Utilisation :
Créer une instance de la classe RNG avec une valeur de départ souhaitée :
<code class="javascript">var rng = new RNG(20);</code>
Accéder à des nombres entiers aléatoires :
<code class="javascript">for (var i = 0; i < 10; i++) console.log(rng.nextInt());</code>
Générer des nombres aléatoires à virgule flottante (0 à 1) :
<code class="javascript">for (var i = 0; i < 10; i++) console.log(rng.nextFloat());</code>
Générer des valeurs aléatoires dans une plage spécifiée :
<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>
Sélectionnez des éléments aléatoires dans un tableau :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!