Skip to content

Générer des int/float aléatoires en Python (random, randrange, randint, etc.)

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