Le module random est un ensemble de fonctions qui permettent de simuler le hasard dans un programme Python. Nous allons voir dans cet article comment l’utiliser pour simuler des lancers de dés. Une seule des nombreuses fonctions de random suffit pour cela.

340px-ClausMeyer-Bild_2564
Les Joueurs de dés, de Claus Meyer (1885)

Importation et dé à 6 faces

Pour pouvoir utiliser un module, il faut l’importer. Cela se fait une seule fois au début du programme, avec l’instruction import random.

La fonction la plus utile pour simuler un lancer de dé s’appelle randint (de l’anglais « random », hasard et « integer », nombre entier). Elle prend deux paramètres qui sont des nombres entiers et renvoie un nombre entier aléatoire compris, au sens large, entre ces deux nombres. La syntaxe pour l’appeler avec deux paramètres et b, comme elle fait partie du module random, est random.randint(a,b).

Pour simuler le lancer d’un dé à 6 faces, on va demander à Python de nous donner un nombre entier aléatoire compris entre 1 et 6, éventuellement égal à 1 ou à 6. C’est ce que fait le code suivant.

import random
random.randint(1,6)

Lancer d’un dé à n faces

On trouve dans le commerce des dés ayant différents nombres de faces (4, 8, 12, 20…). Écrivons une fonction lancerUnDe qui prend un paramètre (le nombre n de faces du dé) et renvoie un nombre entier aléatoire compris entre 1 et n :

def lancerUnDe(n):
    d = random.randint(1,n)
    return d

Lancer de plusieurs dés

Beaucoup de jeux de société demandent de lancer plusieurs dés identiques. Commençons par la fonction lancerDeDes qui va simuler ceci. Elle va prendre deux paramètres : nbDes qui est le nombre de dés à lancer et nbFaces qui est le nombre de faces des dés. Comme il faut renvoyer plusieurs dés, la fonction va renvoyer une liste de nombres aléatoires, qui sont les résultats donnés par les dés.

def lancerDeDes(nbDes,nbFaces):
    listeDesDes = []    #la liste des dés, pour l'instant  vide
    for i in range(nbDes):
        d = lancerUnDe(nbFaces) #on lance un dé
        listeDesDes.append(d)     #on ajoute ce dé à la liste
    return listeDesDes

Ainsi, le code lancerDeDes(3,6) renverra une liste simulant le lancer de 3 dés à 6 faces, par exemple [1,1,5].

Paramètre par défaut

Comme la plupart du temps les dés qu’on utilise ont 6 faces, la fonction lancerDeDes peut être l’occasion de voir la notion de paramètre par défaut, ou facultatif. Pour l’instant, cette fonction nécessite deux paramètres : si on ne lui en donne qu’un, Python renverra un message d’erreur. On peut remplacer sa première ligne par :

def lancerDeDes(nbDes,nbFaces=6):

Cela signifie que si on « oublie » le deuxième paramètre, Python va automatiquement considérer qu’il est égal à 6. Le code lancerDeDes(4,6) est donc équivalent à lancerDeDes(4) : il simule le lancer de 4 dés à 6 faces. On peut modifier de même la fonction lancerUnDe pour que lancerUnDe() (sans paramètre) simule le lancer d’un dé à 6 faces, comme lancerUnDe(6).

Somme de plusieurs dés

Beaucoup de jeux se basent sur la somme des résultats de plusieurs dés. La méthode pour calculer un telle somme est la suivante :

  • on crée une variable S initialisée à zéro ;
  • à chaque lancer de dé, on ajoute le résultat trouvé à S.

Voici une fonction qui prend deux paramètres,  nbFaces qui est le nombre de faces des dés et nbDes qui est le nombre de dés à lancer. Cette fonction simule le lancer de nbDes dés à nbFaces faces qui renvoie la somme des dés obtenus.

def sommeDeDes(nbDes,nbFaces):
    S = 0    #somme des dés, pour l'instant nulle
    for i in range(nbDes):
        d = lancerUnDe(nbFaces) #on lance un dé
        S=S+d     #on ajoute ce dé à la somme
    return S

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s