Maison > interface Web > js tutoriel > Comment puis-je générer des nombres aléatoires répétables en JavaScript ?

Comment puis-je générer des nombres aléatoires répétables en JavaScript ?

DDD
Libérer: 2024-12-11 09:31:09
original
316 Les gens l'ont consulté

How Can I Generate Repeatable Random Numbers in JavaScript?

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

Introduction :

Math.random de JavaScript( ), tout en offrant un caractère aléatoire, ne permet pas l'amorçage. Cela signifie que chaque fois que la fonction est invoquée, elle génère une nouvelle séquence de nombres, ce qui peut être problématique dans les situations où des séquences aléatoires répétables sont souhaitées.

Générateurs de nombres pseudo-aléatoires amorceables :

Étant donné que Math.random() ne dispose pas de capacités d'amorçage, il est nécessaire d'implémenter des générateurs de nombres pseudo-aléatoires (PRNG) externes qui offrent l'amorçage. fonctionnalité. Les PRNG fournissent des nombres aléatoires de haute qualité et permettent une initialisation avec une ou plusieurs valeurs de départ.

Initialisation des semences :

Les PRNG nécessitent une initialisation appropriée pour garantir le caractère aléatoire. Des valeurs de départ bien distribuées et à haute entropie sont cruciales pour un caractère aléatoire robuste. Les fonctions de hachage, telles que cyrb128, peuvent générer des graines appropriées à partir de chaînes courtes. Alternativement, des données factices peuvent être utilisées comme remplissage avec plusieurs itérations du générateur pour mélanger soigneusement l'état initial.

Considérations relatives aux performances :

Les nombres JavaScript ne prennent en charge que jusqu'à 53 bits. résolution pour les entiers entiers et résolution de 32 bits pour les opérations au niveau du bit. Les PRNG modernes utilisent souvent des opérations 64 bits, mais des cales sont nécessaires pour la mise en œuvre de JS, ce qui peut réduire considérablement les performances. Les algorithmes PRNG présentés donnent la priorité aux opérations 32 bits pour des performances optimales en JavaScript.

PRNG recommandés :

sfc32 (Simple Fast Counter)

sfc32 est un PRNG rapide avec un état interne de 128 bits qui excelle en JavaScript. Il présente une excellente qualité aléatoire et est couramment utilisé dans la suite de tests de nombres aléatoires PractRand.

Exemple d'utilisation :

function sfc32(a, b, c, d) {
  return function() {
    // State update logic
    ...
    return (t >>> 0) / 4294967296;  // Convert to floating-point number in the range [0, 1)
  };
}

const seedgen = () => (Math.random() * 2 ** 32) >>> 0;
const getRand = sfc32(seedgen(), seedgen(), seedgen(), seedgen());
Copier après la connexion

Notez que l'exemple utilise une génération de graines simple méthode à des fins de démonstration. Dans la pratique, des mécanismes de génération de semences plus robustes devraient être utilisés.

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