
En Python, vous pouvez générer des nombres pseudo-aléatoires (nombres à virgule flottante float et entiers int) avec random(), randrange(), randint(), uniform(), etc. dans le module random.
Le module aléatoire est inclus dans la bibliothèque standard, donc aucune installation supplémentaire n’est requise.
Cet article décrit le contenu suivant.
- random.random() : 0.0 <= float < 1.0
- aléatoire.uniforme() :
float in given range - Générer des nombres aléatoires pour diverses distributions (gaussienne, gamma, etc.)
- random.randrange() :
int in given range and step - random.randint() :
int in given range - Générer une liste de nombres aléatoires
- random.seed() : Initialise le générateur de nombres aléatoires
Consultez l’article suivant sur la façon d’échantillonner ou de mélanger les éléments d’une liste de manière aléatoire.
random.random() : 0.0 <= float < 1.0
random.random() génère un nombre à virgule flottante aléatoire flottant dans la plage 0.0 <= n < 1.0.
import random
print(random.random())
# 0.4496839011176701
aléatoire.uniforme() :float in given range
random.uniform(a, b) génère un nombre à virgule flottante aléatoire flottant dans la plage a <= n <= b ou b <= n <= a.
import random
print(random.uniform(100, 200))
# 175.26585048238275
Les deux arguments peuvent être plus grands ou plus petits. S’ils sont égaux, seule cette valeur est renvoyée.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
L’argument peut également être spécifié en tant que float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Comme documenté, si la valeur de b est incluse dans la plage dépend de l’équation d’arrondi a + (ba) * random.random().
La valeur finale b peut ou non être incluse dans la plage en fonction de l’arrondi à virgule flottante dans l’équation a + (ba) * random().
random.uniform() — Génère des nombres pseudo-aléatoires — Documentation Python 3.9.7
Générer des nombres aléatoires pour diverses distributions (gaussienne, gamma, etc.)
Alors que random() et uniform() ci-dessus génèrent des nombres aléatoires pour une distribution uniforme, des fonctions à générer pour diverses distributions sont également fournies.
- Répartition bêta :
random.betavariate() - Distribution exponentielle :
random.expovariate() - Distribution gamma :
random.gammavariate() - Distribution gaussienne:
random.gauss() - Log distribution normale :
random.lognormvariate() - Distribution normale:
random.normalvariate() - von Mises distribution:
random.vonmisesvariate() - Répartition de Pareto :
random.paretovariate() - Répartition de Weibull :
random.weibullvariate()
Consultez la documentation officielle pour plus d’informations sur chaque distribution.
random.randrange() :int in given range and step
random.randrange(start, stop, step) renvoie un entier aléatoire dans range(start, stop, step).
Comme avec range(), start et step peuvent être omis. Si omis, start=0 et step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Vous pouvez générer un entier aléatoire pair ou impair, ou un entier aléatoire qui est un multiple de n’importe quel entier. Par exemple, si start est pair et step=2, seul un entier pair dans la plage est généré aléatoirement.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() :int in given range
random.randint(a, b) renvoie un entier aléatoire int dans a <= n <= b. C’est équivalent à random..randrange(a, b + 1). Notez que la valeur de b peut être générée.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Générer une liste de nombres aléatoires
Liste des flotteurs aléatoires
Pour générer une liste de nombres à virgule flottante aléatoires, utilisez random(), uniform(), etc. avec des compréhensions de liste.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Consultez l’article suivant pour plus d’informations sur les compréhensions de liste.
Liste des entiers aléatoires
Lors de la génération d’une liste d’entiers aléatoires, l’utilisation de randrange() ou randint() avec les compréhensions de liste peut contenir des valeurs en double.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Si vous voulez faire une liste d’entiers aléatoires sans duplication, échantillonnez les éléments de range() avec random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Consultez l’article suivant pour plus d’informations sur random.sample().
random.seed() : Initialise le générateur de nombres aléatoires
Vous pouvez initialiser un générateur de nombres aléatoires avec random.seed().
Après initialisation avec la même graine, le nombre aléatoire est généré de la même manière.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
