Nov 21, 2024

Wiki

Python

Aide

edit SideBar

Search

Utiliser Une Bibliotheque Random


Le module random

Présentation

Le module de base random permet la génération basique d'aléa en python.

Pour l’importer :

  >>> from random import *

Les autres langages de programmation ont aussi leur propre bibliothèque de gestion de l’aléa.

Tirages simples

Tirer aléatoirement un réel

Pour obtenir un nombre entre 0 et 1, faire simplement :

  >>> random()

Il suffit d’avoir un générateur aléatoire de nombres entre 0 et 1, pour pouvoir générer n’importe quelle catégorie de nombres...

Exemples de tirage aléatoire

  • Pour tirer un nombre entre 0 et 10, on fait une homothétie :
  >>> 10*random()
  • Pour tirer un nombre entre 1 et 2, on fait une translation : on tire un nombre entre 0 et 1, et on ajoute 1
  >>> random() + 1
  • Ces deux procédés se combinent pour tirer aléatoirement un réel entre deux bornes quelconques. Par exemple,
  >>> 5*random() - 2.5
renvoie un nombre aléatoire entre -2,5 et 2,5.
  • Si l’on veut tirer un entier, il suffit de prendre la partie entière. Par exemple,
  >>> int(10*random())
>>> int(10*random()+5)

tirent respectivement un entier entre 0 et 9, et un autre entre 5 et 14.

Il reste à combiner l’ensemble des méthodes précédentes pour obtenir tous les tirages possibles.

Ainsi, si l’on veut tirer un nombre, à deux décimales, entre 0 et 1, on tirera un entier entre 0 et 100, que l’on divisera par 100 :

  >>> int(100*random())/100.

Exemple à ne pas faire

Ce qui précède est la seule méthode raisonnable d’utilisation d’un générateur de nombre aléatoire.

On utilisera la même technique en Python, et C et en Java, etc.

Retenir que, pour obtenir un nombre entre 0 et 0,1, il ne faut JAMAIS procéder comme suit :

  • Tirer un nombre entre 0 et 1.
  • S’il n’est pas entre 0 et 0,1, alors recommencer.

En effet, si l’on souhaite obtenir, par cette manière, un nombre entre 0 et 0,0001, on a une probabilité de 1 millième de réussir à chaque lancer : il faudra attendre longtemps.

Travaux pratiques

  1. Faire une fonction qui tire aléatoirement un réel entre 17 et 92,5.
  2. Faire une fonction qui tire aléatoirement un entier entre a et b (fournis par l’utilisateur).
  3. Faire, de même, une fonction qui tire un nombre à deux décimales entre 0 et 100.

Utilisation de la bibliothèque random

Il est utile de savoir se débrouiller avec une simple fonction random(), et comprendre qu'une simple génération de nombres entre 0 et 1 suffit à tous les besoins d'aléa. Les bibliothèques modernes sont cependant souvent assez complètes, et contiennent un certain nombre de fonctionnalités pour nous simplifier la vie.

choice(objet)
extrait aléatoirement un élément de objet, qui est un conteneur : liste, tuple, string...
randint(a,b)
tire aléatoirement un entier entre a et b inclus.
sample(objet, taille)
extrait un échantillon de la taille fournie à partir de l'objet donné (un conteneur quelconque).
shuffle(objet)
mélange l'objet fourni. Cet objet doit être modifiable (e.g., une liste, mais ni un tuple, ni un string), et il sera modifié sur place.
uniform(a,b)
tire aléatoirement un réel entre a et b.

Travaux pratiques

  1. Tester les commandes précédentes.
  2. Refaire les exercices ci-dessus avec ces nouvelles fonctions, et les mémoriser.
  3. Consulter la documentation de la bibliothèque random.

N.B.: Il faudrait, à l’issue de ce TP :

  • Parfaitement maîtriser les techniques fondamentales, précédemment évoquées, de génération d’un nombre aléatoire. Elles sont communes à tout langage de programmation.
  • Savoir qu’il n’est pas toujours nécessaire de réinventer la roue : connaître les bibliothèques et leurs méthodes avancées de génération de nombres aléatoires.

Page Actions

Recent Changes

Group & Page

Back Links