Le module de base random permet de faire des probabilités basiques en python.
Pour obtenir un nombre entre 0 et 1, faire simplement :
>>> from random import random >>> random()
>>> from random import randint >>> randint(1,10) 4
Pour tirer un nombre pair inférieur à 100 :
>>> randrange(2,100,2)
On va donc tirer aléatoirement un élément de range(2,100,2). Le pas (dernier argument) est facultatif.
Pour tirer aléatoirement un élément dans une liste L :
>>> L=[1,4,5,2,78] >>> choice(L)
Pour tirer k éléments distincts dans une liste L :
>>> L=[1,4,5,2,78] >>> sample(L,k)
Par exemple :
>>> import random >>> L=range(10) >>> random.sample(L,5) [7, 0, 4, 3, 1]
Ce tirage s'effectue sans répétition.
Les générations de nombres pseudo-aléatoires se basent fréquemment sur l’itération d’une fonction à partir d’une valeur initiale.
Ce procédé est déterministe : deux mêmes valeurs initiales (deux mêmes « graines ») fournissent deux « suites aléatoires » identiques.
En python, la graine est automatiquement basée sur la date et l’heure. Seulement, on peut souhaiter tirer plusieurs fois la même succession de nombres aléatoires...
Pour réinitialiser la graine à partir de l'heure actuelle :
>>> from random import random, seed >>> seed() >>> random()
Pour générer une suite pseudo-aléatoire à partir d’une valeur bien précise, par exemple de la chaîne toto :
>>> seed('toto') >>> random()
Dans ce cas, Python utilisera la valeur hachée du paramètre pour graine.
Ainsi, si l'on fait deux fois de suite les commandes suivantes :
>>> from random import * >>> seed('toto') >>> random() 0.3064397088538271 >>> seed('toto') >>> random() 0.3064397088538271
Alors on trouvera deux fois le même nombre « aléatoire », et on générera deux fois la même suite.