Comment simuler le hasard. les cinq plus importantes fonctions

Définition du hasard

Selon le dictionnaire, le hasard est un évènement imprévu heureux ou malheureux. Les jeux du hasard sont donc soumis au hasard seul, où l’habileté ne compte pas. En mathématique, nous avons beaucoup recours à l’utilisation de nombres aléatoires pour modéliser certains phénomènes dus au hasard.

Dans la programmation informatique, on a besoin parfois de simuler le hasard, nous verrons plus loin quelques exemples de cas pratiques qui nécessitent ce type de simulation. Mais d’abord, est-il possible de créer numériquement une situation purement hasardeuse ?

photo of two red dices
Photo by Jonathan Petersson

Pour produire des nombres aléatoires, l’ordinateur doit utiliser une théorie mathématique. Pour simplifier au maximum, ces théories mathématiques sont basées sur des situations dont l’existence est peu probable. Si le sujet vous intéresse vous pouvez consulter cette page

Suivre une loi mathématique pour produire un phénomène purement aléatoire n’est donc pas logique car la loi est préalablement définie, de ce fait numériquement on ne peut produire que des situations pseudo aléatoires. Voici un exemple de calcul de probabilité où on utilise ce genre de simulation

Génération de nombres aléatoires

Il existe plusieurs manières pour simuler le hasard avec python. Et pour commencer, il faut importer le module random avec la ligne de code suvante :

from random import *

Alors, le fait de mettre * à la fin de la ligne permet d’importer toutes les fonctions du module. Ceci n’est pas recommandé car il rend le programme plus lourd. En effet, il est plus top recommandé de n’importer que les fonctions que l’on souhaite utiliser.

D’autre part, ce module est très riche en fonctions, importantes selon le domaine d’utilisation, pour avoir une description complète des fonctions de ce module, visitez la documentation officielle de python à cette adresse.

Si notre besoin se limite à l’utilisation de nombres aléatoires, on peut le réaliser de plusieurs manières différentes :

La fonction random()

Cette fonction permet de renvoyer des nombres compris entre 0 et 1 (intervalle [0 ; 1]). Pour appeler uniquement cette fonction à partir du module random, on utilise la ligne de commande suivante :

from random import random
x = random()

la fonction seed()

La fonction random() ne prend aucun argument.  A chaque exécution, cette fonction retournera une valeur différente. Si pour des raisons de débogage ou autre on a besoin qu’elle renvoie la même valeur, on peut précéder cette fonction par la fonction seed() qui permet de figer la valeur aléatoire retournée par la fonction random().

La fonction randint()

Cette fonction permet de produire aléatoirement des nombre entiers dans un intevalle donné. Elle prend deux arguments, le premier correspond à la borne inférieure de l’intervalle et le second correspond à sa borne supérieure.

La fonction choice()

Cette fonction est très pratique, elle permet de choisir au hasard un élément à partir d’une variable de type liste. Voici quelques exemples d’utilisation de cette fonction :

from random import choice
liste1 = choice(range(10))
liste2 = choice("lhfgghqjufg")
print(liste2)
print(liste1)

La fonction shuffle

Cette fonction redistribue aléatoirement les positions des éléments d’une liste, elle change les indices des éléments.

from random import shuffle
shuffle(liste2)

Cette fonction est idéale pour mélanger les cartes dans un jeu de carte par exemple.

La fonction sample()

Cette fonction prend 2 arguments et retourne un échantillon d’éléments choisi aléatoirement dans une liste. Le premier argument de cette fonction correspond à la liste que l’on souhaite échantillonner. Et le deuxième argument correspond au nombre d’éléments qu’on veut prélever.

from random import sample
ll = sample(liste2, 2)

Juste avec ces quelques fonctions du module random, on peut faire suffisament d’applications intéressantes. Ça sera le sujet d’un prochain article.

Si vous avez aimé l'article vous êtes libre de le partager :)

3 commentaire

  1. Bonjour Hicham… que conseillerais tu pour faire de nombreux essais afin d’équilibrer un jeu de société dans lequel iol y a des lancers de dés successifs?

    1. Bonjour,
      alors pour simuler un lancer de dés il y a plusieurs possibilités, on peut utiliser la fonction randint() ou Choice() par exemple, et pour faire de nombreux essais il suffit d’utiliser une boucle for ou while.
      J’espère que j’ai répondu à ta question 🙂

Laisser un commentaire