Exercice 57 / 100

NumPy — Random

Génère des nombres aléatoires et des échantillons avec np.random

np.random fournit des générateurs de nombres aléatoires : uniforme, normal, choix dans une liste, permutations, etc. Essentiel en simulation, sampling, ML.

Reproductibilité : seed

np.random.seed(42)

Fixer le seed permet d'obtenir les mêmes nombres "aléatoires" à chaque exécution. Indispensable pour partager un notebook ou débugger un test.

Le seed est global : tout appel à np.random après le seed est déterministe jusqu'au prochain seed. En 2026, on préfère np.random.default_rng(42) (plus moderne, isolé).

Distributions courantes

np.random.rand(5) 5 valeurs uniformes dans [0, 1) np.random.rand(3, 4) matrice 3×4 uniforme np.random.randn(5) 5 valeurs N(0, 1) (loi normale standard) np.random.normal(loc=100, scale=15, size=1000) N(μ=100, σ=15), 1000 tirages np.random.uniform(0, 10, size=20) uniforme sur [0, 10) np.random.randint(1, 100, size=5) entiers dans [1, 100)
Les deux réglages d'un tirage normal : loc place le centre de la distribution, scale dit de combien les valeurs s'en écartent en moyenne

Échantillonnage discret

data = np.array(['a', 'b', 'c', 'd']) np.random.choice(data, 3) 3 tirages avec remise np.random.choice(data, 3, replace=False) sans remise np.random.choice(data, 100, p=[0.5,0.2,0.2,0.1]) avec probas custom
np.random.shuffle(arr) mélange EN PLACE np.random.permutation(arr) renvoie une nouvelle copie mélangée

Exemple complet

np.random.seed(42) print('Uniforme:', np.random.rand(5)) print('Normale:', np.random.randn(5)) print('Entiers:', np.random.randint(1, 100, size=5))
# Simuler un grand échantillon d'une loi normale normale = np.random.normal(loc=100, scale=15, size=1000) print('Moyenne échantillon:', np.mean(normale)) # ~ 100 print('Std échantillon:', np.std(normale)) # ~ 15

Pour des QI (moyenne 100, écart-type 15), simuler 1000 valeurs avec np.random.normal donne un échantillon réaliste.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →