Exercice 57 / 100

NumPy — Random

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

📖 Cours

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 uniformenp.random.randn(5) 5 valeurs N(0, 1) (loi normale standard)np.random.normal(loc=100, scale=15, size=1000) N(μ=100, σ=15), 1000 tiragesnp.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
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 remisenp.random.choice(data, 3, replace=False) sans remisenp.random.choice(data, 100, p=[0.5,0.2,0.2,0.1]) avec probas custom
np.random.shuffle(arr) mélange EN PLACEnp.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 normalenormale = np.random.normal(loc=100, scale=15, size=1000)print('Moyenne échantillon:', np.mean(normale)) # ~ 100print('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.

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