Dans cet article
Qu'est-ce que la génération de nombres aléatoires ?
La génération de nombres aléatoires est le processus qui consiste à produire des nombres impossibles à prédire à l'avance. Les ordinateurs sont des machines déterministes — ils ne peuvent pas produire de véritable aléatoire sans entrée externe. Différentes techniques produisent différentes qualités d'aléatoire, ce qui importe grandement pour les applications de sécurité.
Les vrais générateurs de nombres aléatoires (TRNG) puisent leur entropy dans des phénomènes physiques : mouvement de la souris, timing du clavier, temps d'arrivée des paquets réseau, ou capteurs matériels dédiés. Les générateurs pseudo-aléatoires (PRNG) utilisent des algorithmes mathématiques alimentés par de l'entropy pour produire des séquences qui semblent aléatoires.
Comment sont générés les nombres aléatoires
CheckTown utilise le générateur de nombres aléatoires cryptographiquement sécurisé du navigateur.
- Source d'entropy — utilise window.crypto.getRandomValues() qui puise dans l'entropy au niveau du système d'exploitation
- Mappage de plage — mappe les valeurs aléatoires brutes vers la plage min/max que vous avez spécifiée, sans biais
- Génération par lots — générez plusieurs nombres à la fois pour des listes, des tableaux ou des besoins en masse
Essayez gratuitement — sans inscription
Générer des nombres aléatoires →Quand utiliser un générateur de nombres aléatoires
La génération de nombres aléatoires a de nombreuses applications dans le développement, les tests et les statistiques.
- Tests — générez des données de test aléatoires pour alimenter des fixtures ou des bases de données de test
- Échantillonnage — sélectionnez des échantillons aléatoires dans des jeux de données pour l'analyse statistique ou l'affectation de tests A/B
- Jeux et simulations — générez des entrées imprévisibles pour des simulations, des jeux ou des loteries
Questions fréquemment posées
Quelle est la différence entre Math.random() et crypto.getRandomValues() ?
Math.random() utilise un PRNG rapide initialisé au démarrage. Il convient aux simulations et aux jeux, mais pas à la sécurité. crypto.getRandomValues() utilise le CSPRNG du système d'exploitation (PRNG cryptographiquement sécurisé), adapté à la génération de jetons, de clés et d'autres valeurs sensibles pour la sécurité. Utilisez toujours crypto.getRandomValues() à des fins de sécurité.
Puis-je utiliser des nombres aléatoires pour des clés cryptographiques ?
Oui, mais uniquement s'ils sont générés avec un CSPRNG. Les nombres aléatoires issus de Math.random() ou de PRNG non cryptographiques similaires sont prévisibles connaissant la graine et suffisamment d'échantillons de sortie. Les clés cryptographiques, les jetons, les sels et les nonces doivent être générés avec un aléatoire cryptographiquement sécurisé.
Qu'est-ce que le biais modulo et comment affecte-t-il les plages de nombres aléatoires ?
Le biais modulo survient lorsqu'on mappe une valeur aléatoire vers une plage avec l'opérateur %. Si l'espace des valeurs aléatoires n'est pas divisible de façon égale par la taille de la plage, certaines valeurs apparaissent plus souvent que d'autres. Par exemple, mapper 0-255 vers 0-9 avec % 10 fait apparaître les valeurs 0 à 5 légèrement plus souvent. CheckTown utilise le rejet par échantillonnage pour éliminer ce biais.