Générateur de nombres aléatoires en ligne

Acrafto Team Mathématiques
Mis à jour
Réglages rapides
Tout se passe dans votre navigateur. Aucun nombre ne quitte jamais votre appareil.

Comment fonctionne le générateur de nombres aléatoires ?

Le générateur vous offre deux sources d’aléatoire, et c’est à vous de choisir celle qui convient.

Aléatoire sécurisé puise l’entropie de votre système d’exploitation via l’API Web Crypto (crypto.getRandomValues()). Il est imprévisible et non reproductible — le bon choix pour un tirage réel où personne ne doit pouvoir deviner le résultat à l’avance.

Avec graine (seed) transforme n’importe quel texte que vous saisissez en état initial pour un générateur déterministe (xoshiro128**). La même graine produit toujours les mêmes nombres, ce qui permet à quiconque de rejouer votre tirage et de confirmer que vous avez bien obtenu ce que vous annoncez.

Les deux fonctionnent entièrement dans votre navigateur. Aucun nombre n’atteint jamais un serveur.

Aucun biais de modulo

La plupart des générateurs simples projettent une valeur aléatoire sur 32 bits vers votre plage avec valeur % plage. Lorsque la plage ne divise pas exactement 2³², les nombres les plus bas reviennent légèrement plus souvent que les autres. Sur des milliers de tirages, cet écart devient mesurable.

Ce générateur utilise à la place l’échantillonnage par rejet : les valeurs qui tomberaient dans la queue inégale sont écartées et retirées. Chaque nombre de votre plage a exactement la même chance d’apparaître. Vous pouvez le vérifier vous-même avec le test d’uniformité intégré.

Ce que le générateur permet de faire

Plage

  • Minimum et maximum — n’importe quelle plage entière ou décimale, valeurs négatives incluses
  • Combien de nombres — de 1 jusqu’à 1 000 000 en un seul tirage
  • Sans répétition — chaque nombre apparaît au maximum une fois, comme dans un vrai tirage
  • Tri — ordre de tirage, croissant ou décroissant ; le tri ne modifie jamais l’aléatoire
  • Pas — limiter les résultats aux multiples d’une valeur, pour n’obtenir que 0, 5, 10, 15
  • Exclure des nombres — lister les valeurs qui ne doivent jamais être tirées

Mode

  • Source d’aléatoire — sécurisée (Web Crypto) ou avec graine (reproductible)
  • Graine (seed) — n’importe quel texte ; la même graine rejoue toujours le même tirage
  • Distribution — uniforme, normale (gaussienne), exponentielle, Poisson, triangulaire, binomiale
  • Poids — donner à certains nombres une probabilité plus élevée, sous la forme nombre:poids
  • Notation de dés3d6+2, d20, 2d20kh1 pour l’avantage, 4d6dl1 pour générer des caractéristiques

Sortie

  • Séparateur — virgule, espace, point-virgule, tabulation, retour à la ligne, ou tout texte de votre choix
  • Système numérique — décimal, binaire, octal, hexadécimal ou base 36
  • Compléter avec des zéros — transformer 7 en 007 pour des numéros de billet ou d’identifiant
  • Préfixe et suffixe — encadrer chaque nombre d’un texte fixe
  • Modèle{n} est le nombre, {i} sa position, donc user{n} devient user42
  • Copier au format — texte brut, CSV, JSON ou tableau Markdown

Statistiques

Chaque tirage est résumé en direct : somme, moyenne, médiane, minimum, maximum, écart-type, ainsi que le nombre de résultats pairs, impairs ou premiers. Un histogramme montre la forme de la distribution, et un test du khi-deux indique si les résultats correspondent réellement à une distribution uniforme.

Historique

Les 50 derniers tirages sont conservés dans votre navigateur, avec les réglages qui les ont produits — un clic suffit pour en restaurer un. Les configurations que vous utilisez souvent peuvent être enregistrées comme préréglages nommés, et l’ensemble s’exporte vers un fichier JSON que vous pouvez importer sur une autre machine. Rien n’est stocké ailleurs que dans ce navigateur.

Clavier

Appuyez sur Espace ou R pour relancer un tirage sans toucher la souris.

Préréglages rapides

PréréglagePlageNombreUsage
🎲 Dé1–61Jeux de société, prise de décision
🪙 Pièce0–11Pile ou face
🎰 Loterie1–496Unique, trié, comme un vrai tirage
💯 1–1001–1001Pourcentages, répartitions A/B
🔢 Code PIN0–94Quatre chiffres, répétitions autorisées

Tirages reproductibles

Le mode avec graine existe pour les moments où « faites-moi confiance, c’était aléatoire » ne suffit pas.

Choisissez une graine sur laquelle tout le monde peut s’accorder à l’avance — une date, un hashtag, le cours de clôture d’une valeur publique — et annoncez-la avant le tirage. N’importe qui peut ensuite saisir la même graine avec les mêmes réglages et obtenir un résultat identique. Vous n’avez pas prouvé que les nombres étaient imprévisibles ; vous avez prouvé que vous n’avez pas relancé le tirage jusqu’à obtenir la réponse qui vous plaisait.

C’est aussi ce qui permet de rendre l’aléatoire reproductible dans un travail qui doit pouvoir être vérifié : un plan d’échantillonnage qu’un collègue peut relancer, un jeu de données de test qui reste stable d’une exécution à l’autre d’une suite de tests, un exercice en classe où chaque élève reçoit les mêmes données « aléatoires ».

Choisir une distribution

Uniforme donne à chaque nombre de la plage la même chance. C’est ce que l’on entend généralement par aléatoire, et c’est la valeur par défaut.

Les autres regroupent les résultats autour d’une valeur, ce que les grandeurs du monde réel ont tendance à faire :

  • Normale (gaussienne) — tailles, erreurs de mesure, résultats de tests. Définissez une moyenne et un écart-type.
  • Exponentielle — temps d’attente entre des événements indépendants.
  • Poisson — nombre d’événements sur un intervalle fixe : arrivées par heure, défauts par lot.
  • Triangulaire — quand vous connaissez le minimum, le maximum et la valeur la plus probable, mais rien d’autre. Fréquent dans les estimations de projet.
  • Binomiale — nombre de succès sur un nombre fixe d’essais à probabilité fixe.

Chaque distribution est bornée à la plage que vous définissez, de sorte qu’une longue queue gaussienne ne peut jamais dépasser votre minimum ou votre maximum.

Où sont utilisés les nombres aléatoires

Jeux et divertissements

  • Jeux de société — lancers de dés, ordre de jeu
  • Jeux de rôle sur table4d6dl1 pour les caractéristiques, 2d20kh1 pour l’avantage
  • Tirages au sort — désigner un gagnant, avec une graine pour que les participants puissent vérifier
  • Quiz — ordre aléatoire des questions

Statistiques et science

  • Échantillonnage — tirer un échantillon d’une population sans répétition
  • Tests A/B — répartir les participants en groupes
  • Simulation de Monte-Carlo — estimer une probabilité par répétition
  • Bootstrapping — rééchantillonnage pour estimer une incertitude

Développement

  • Données de test — un million de valeurs, générées en arrière-plan pour que la page reste réactive
  • Fixtures — avec graine, pour qu’un test qui échoue échoue de la même façon à chaque fois
  • Identifiants aléatoires — avec complément de zéros, préfixes ou modèle
  • Tests de charge — identifiants sous forme de modèle comme user{n}@example.com

Nombres vraiment aléatoires vs. pseudo-aléatoires

Math.random()crypto.getRandomValues()Avec graine (xoshiro128**)
TypePseudo-aléatoireCryptographiquement sécuriséPseudo-aléatoire, déterministe
Source d’entropieGraine choisie par le moteurCSPRNG systèmeVotre texte de graine
Prévisible ?PotentiellementNonOui, par conception
Reproductible ?NonNonToujours
Adapté à la sécuritéNonOuiNon
Adapté aux statistiquesÇa dépendOuiOui
Adapté aux tirages vérifiablesNonNonOui

Math.random() n’est utilisé nulle part dans cet outil.

Tirages sans répétition

Avec l’option Sans répétition activée, chaque nombre de la plage apparaît au maximum une fois. Idéal pour :

  • Tirages au sort — personne ne peut gagner deux fois
  • Permutations — mélanger un ensemble d’éléments
  • Bingo — appeler des numéros qui restent appelés
  • Loterie — six numéros distincts entre 1 et 49

Le tirage utilise un mélange de Fisher-Yates partiel, ce qui fait que demander 6 nombres parmi un million est aussi rapide que demander 6 nombres parmi 49 — il ne boucle jamais dans l’espoir d’éviter une collision. Si vous demandez plus de nombres uniques que la plage ne peut en fournir, le générateur vous le signale au lieu de rester bloqué.

Export des résultats

Copiez les nombres en texte brut avec le séparateur de votre choix, en CSV pour un tableur, en JSON pour du code, ou en tableau Markdown pour de la documentation. Les très grands tirages restent entièrement en mémoire et se copient en intégralité, même si seuls les premiers milliers sont affichés à l’écran.

Générer des nombres aléatoires dans votre propre code

JavaScript / TypeScript

// Entier cryptographiquement sécurisé dans [min, max], sans biais de modulo.
// L'approche naïve `value % range` favorise les petits nombres quand la plage
// ne divise pas 2**32 de façon exacte - on rejette donc les valeurs de la queue inégale.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}

Python

import random
import secrets

# Cryptographiquement sécurisé, sans biais de modulo
n = secrets.randbelow(max - min + 1) + min

# Reproductible : la même graine donne toujours la même séquence
rng = random.Random('ma-graine')
n = rng.randint(min, max)

# Sans répétition
sample = random.sample(range(min, max + 1), count)

PHP

// Cryptographiquement sécurisé (PHP 7+), sans biais de modulo
$n = random_int($min, $max);

// Reproductible
mt_srand(crc32('ma-graine'));
$n = mt_rand($min, $max);

Foire aux questions (FAQ)

Le résultat est-il vraiment aléatoire ? En mode sécurisé, oui. Il provient de crypto.getRandomValues(), un générateur cryptographiquement sécurisé alimenté par le pool d'entropie de votre système d'exploitation. Les résultats sont distribués uniformément et imprévisibles. Le mode avec graine fait délibérément l'inverse : il est reproductible, et c'est précisément son but.
Combien de nombres puis-je générer à la fois ? Jusqu'à 1 000 000. Les tirages au-delà de 50 000 sont calculés dans un worker en arrière-plan pour que la page reste réactive, et l'écran affiche les 2 000 premiers avec le décompte du reste — la copie vous donne quant à elle tout le résultat.
Puis-je générer des nombres négatifs ? Oui. Définissez un minimum négatif. Toute la plage des nombres JavaScript fonctionne, y compris des plages négatives à chaque extrémité.
Le tri affecte-t-il l'aléatoire ? Non. Les nombres sont d'abord tirés, puis triés ensuite. Le tri ne change que l'ordre dans lequel vous les voyez.
La même graine donnera-t-elle les mêmes nombres demain ? Oui, et sur n'importe quel autre appareil ou navigateur. Le générateur avec graine est entièrement déterministe et ne dépend que de votre graine et de vos réglages.
Que m'indique le test d'uniformité ? Il effectue un test du khi-deux comparant la fréquence réelle de chaque nombre à sa fréquence théorique attendue. Si la statistique reste sous la valeur critique, les résultats sont compatibles avec une distribution uniforme. Il faut une plage raisonnablement étroite et suffisamment de tirages — au moins cinq par valeur possible — pour que le test ait un sens.
Comment fonctionnent les poids ? Écrivez-les sous forme de paires nombre:poids, par exemple 1:5, 2:1, 3:1. Ici, 1 a cinq fois plus de chances de sortir que 2 ou 3. Les nombres que vous ne listez pas reçoivent un poids de zéro et ne sont jamais tirés.
Quelle notation de dés est prise en charge ? 3d6 lance trois dés à six faces. Ajoutez un modificateur avec 3d6+2. Conservez ou écartez des dés avec kh, kl, dh, dl — ainsi 2d20kh1 conserve le plus élevé de deux d20 (avantage) et 4d6dl1 écarte le plus faible de quatre d6.
Mon historique est-il stocké quelque part ? Uniquement dans ce navigateur, en stockage local. Il n'atteint jamais un serveur, ne se synchronise avec aucun autre appareil, et disparaît si vous effacez les données du site. Exportez-le en JSON si vous souhaitez le conserver ou le transférer.

J'apprécierais que vous partagiez ces pages avec vos amis, les ajoutiez aux favoris ou y fassiez des liens. Merci ! 🙏