Accès rapide :
Introduction
Créer un générateur
Rendre les tirages reproductibles
Générer des flottants uniformes
Utiliser une distribution normale
Tirer des valeurs dans une collection
Mélanger des valeurs
Ancienne API et API moderne
NumPy propose une API moderne pour générer des nombres aléatoires. Elle repose sur l'objet
Generator, obtenu avec np.random.default_rng(). Cette API est préférable à
l'ancienne utilisation directe de np.random, car elle isole mieux l'état du générateur.
Un générateur permet de produire des valeurs aléatoires. Dans un document pédagogique, il est utile de fournir une graine afin que les résultats soient reproductibles.
1 2 3 4 5 6 |
import numpy as np rng = np.random.default_rng(1234) dice = rng.integers(1, 7, size=10) print(dice) |
[6 6 6 3 2 6 1 2 1 2]
La borne haute passée à integers est exclusive. Pour simuler un dé à six faces, on demande
donc des entiers entre 1 inclus et 7 exclu.
Deux générateurs initialisés avec la même graine produisent la même séquence de valeurs. C'est très utile pour documenter un calcul ou déboguer une simulation.
1 2 3 4 5 6 7 |
import numpy as np rng1 = np.random.default_rng(42) rng2 = np.random.default_rng(42) print(rng1.integers(0, 10, 5)) print(rng2.integers(0, 10, 5)) |
[0 7 6 4 4] [0 7 6 4 4]
La méthode random produit des flottants dans l'intervalle [0, 1[.
1 2 3 4 5 6 |
import numpy as np rng = np.random.default_rng(1234) values = rng.random((2, 3)) print(np.round(values, 3)) |
[[0.977 0.38 0.923] [0.262 0.319 0.118]]
La méthode normal permet de générer des valeurs autour d'une moyenne, avec un écart type
donné.
1 2 3 4 5 6 |
import numpy as np rng = np.random.default_rng(1234) values = rng.normal(loc=100, scale=15, size=5) print(np.round(values, 1)) |
[ 75.9 101. 111.1 102.3 113. ]
La méthode choice permet de choisir des valeurs dans un tableau. On peut autoriser ou non
les répétitions avec l'argument replace.
1 2 3 4 5 6 |
import numpy as np rng = np.random.default_rng(1234) values = np.array(["Alice", "Bruno", "Chloe", "Diane"]) print(rng.choice(values, size=3, replace=False)) |
['Diane' 'Bruno' 'Chloe']
La méthode shuffle mélange un tableau en place. Si vous voulez conserver le tableau initial,
utilisez plutôt permutation.
1 2 3 4 5 6 7 |
import numpy as np rng = np.random.default_rng(1234) data = np.arange(1, 6) rng.shuffle(data) print(data) |
[1 5 2 4 3]
Vous rencontrerez encore beaucoup de code utilisant np.random.randint ou
np.random.randn. Ce code fonctionne toujours, mais pour un nouveau programme il est
préférable de créer explicitement un générateur avec default_rng.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :