Skip to main content
CheckTown
Générateurs

Générateur de nombres aléatoires : Des nombres vraiment non biaisés en ligne

Publié le 5 min de lecture
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.

Outils associés