Comment générer des nombres aléatoires en Python ?

Générer des nombres aléatoires est une opération courante en programmation, notamment pour les jeux, les simulations ou les tests automatisés.

Python propose un module de la librairie standard appelé random qui facilite cette tâche.

Pour l'utiliser, pas besoin d'installation, il suffit de l’importer :

import random

Voici quelques utilisations classiques de ce module :

Générer un entier aléatoire entre a et b (inclus)

nombre = random.randint(a, b)

Générer un nombre décimal aléatoire entre 0 et 1

nombre = random.random()

Générer un nombre décimal entre a et b

nombre = random.uniform(a, b)

Sélectionner un élément aléatoire dans une liste

element = random.choice(ma_liste)

Mélanger une liste

random.shuffle(ma_liste)

Voici un petit script qui combine plusieurs de ces fonctions :

import random

noms = ["Alice", "Bob", "Charlie", "Diana"]

# Tirer un nom au hasard
nom_tire = random.choice(noms)
print(f"Nom tiré au hasard : {nom_tire}")

# Générer un score aléatoire entre 0 et 100
score = random.randint(0, 100)
print(f"Score aléatoire : {score}")

# Mélanger l’ordre des noms
random.shuffle(noms)
print(f"Noms mélangés : {noms}")

# Générer un coefficient aléatoire entre 0.5 et 1.5
coefficient = random.uniform(0.5, 1.5)
print(f"Coefficient aléatoire : {coefficient:.2f}")

Ce script peut servir de base à un jeu, un classement, ou une simulation simple.

Contrôler l’aléatoire avec random.seed

Par défaut, les résultats générés sont différents à chaque exécution.

Mais si tu veux rendre l’aléatoire reproductible (par exemple pour des tests ou des démonstrations), tu peux fixer une "graine" avec random.seed() :

random.seed(42)

Cela permet de produire la même suite de nombres aléatoires à chaque lancement du programme.

import random

random.seed(42)  # Pour des résultats reproductibles

noms = ["Alice", "Bob", "Charlie", "Diana"]

# Tirer un nom au hasard
nom_tire = random.choice(noms)
print(f"Nom tiré au hasard : {nom_tire}")

# Générer un score aléatoire entre 0 et 100
score = random.randint(0, 100)
print(f"Score aléatoire : {score}")

# Générer un coefficient aléatoire entre 0.5 et 1.5
coefficient = random.uniform(0.5, 1.5)
print(f"Coefficient aléatoire : {coefficient:.2f}")

Pourquoi utiliser random.seed dans les tests ?

Lorsque tu écris des tests unitaires, tu veux que les résultats soient prévisibles et reproductibles à chaque exécution. Si ton code dépend d’une valeur aléatoire, le test pourrait réussir une fois, puis échouer la fois suivante… simplement parce que la valeur générée a changé 🤷‍♂️

En fixant le "seed" avec random.seed(), tu t’assures que le comportement de ton code reste stable pendant les tests, ce qui permet de repérer plus facilement les erreurs réelles dans la logique du programme, plutôt que des résultats qui varient de façon imprévisible.

Exemple :

def tirer_un_score():
    random.seed(123)  # Graine fixe pour test
    return random.randint(0, 100)

assert tirer_un_score() == 6  # Ce test passera toujours

Rechercher sur le site

open_in_new

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.