Maison > interface Web > js tutoriel > Comment puis-je amorcer le générateur de nombres aléatoires en JavaScript ?

Comment puis-je amorcer le générateur de nombres aléatoires en JavaScript ?

DDD
Libérer: 2024-11-29 17:35:12
original
207 Les gens l'ont consulté

How Can I Seed the Random Number Generator in JavaScript?

Amorçage du générateur de nombres aléatoires en JavaScript

Introduction :
Le générateur de nombres aléatoires intégré à JavaScript, Math.random() ne peut pas être explicitement généré ou manipulé. Cependant, des fonctions externes peuvent être utilisées pour fournir une fonctionnalité d'amorçage et générer des nombres aléatoires de haute qualité avec des conditions initiales spécifiques.

Réponse :
Bien que Math.random() reste non amorçable, plusieurs Des fonctions de générateur de nombres pseudo-aléatoires (PRNG) efficaces et robustes existent en JavaScript qui peuvent être générées et fournir une excellente caractère aléatoire.

Initialisation des graines :
Pour initialiser correctement les PRNG, il est crucial d'utiliser des graines à haute entropie. Une méthode efficace consiste à utiliser des fonctions de hachage telles que cyrb128, qui peuvent générer diverses valeurs de hachage de 128 bits à partir des chaînes d'entrée. Alternativement, remplir la graine avec des données factices et faire avancer le générateur peut également être utilisé, bien que cela limite le nombre d'états initiaux.

sfc32 (Simple Fast Counter) PRNG :
sfc32 est un PRNG notable qui a réussi avec succès la suite de tests de nombres aléatoires PractRand. Il fonctionne avec un état 128 bits et offre une vitesse exceptionnelle en JavaScript. Un exemple d'utilisation de sfc32 avec un générateur de graines personnalisé :

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;
  }
}

const seedgen = () => (Math.random() * 2 ** 32) >>> 0;
const getRand = sfc32(seedgen(), seedgen(), seedgen(), seedgen());
for (let i = 0; i < 10; i++) console.log(getRand());
Copier après la connexion

En utilisant ces techniques, les développeurs JavaScript peuvent exploiter la puissance des PRNG amorçables pour générer des nombres aléatoires de haute qualité pour diverses applications, allant de la simulation au développement de jeux. .

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal