Les jeux de hasard sont très présents dans notre société. Les jeux de cartes par exemple, casino, roulette, … Dans cet article je vais détailler les étapes de construction d’un script python qui permet de créer un simulateur de jeu de hasard.
Cet exercice de programmation permettra de revenir sur l’utilisation des boucles en python ainsi que les structures conditionnelles. L’exercice que je vous propose de programmer est inspiré de la situation du cours de probabilité.
Simulation de jeu de hasard
Le jeu de hasard que l’on souhaite programmer est le suivant:
La règle de jeu est très simple, il suffit de lancer 2 dés simultanément et d’additionner les nombres obtenus avec les deux faces supérieures, puis de récupérer le gain qui correspond à la somme.
On a vu précédemment dans le cours de probabilité que la chance de gagner une somme supérieure au prix de la partie est de l’ordre de 17%. Imaginons maintenant que l’on dispose de 100 euros, et on souhaite jouer à ce jeu de hasard jusqu’à épuisement total de cette somme. Le but est de répondre aux quelques questions suivantes:
- Combien de partie peut-on jouer?
- Est-il possible de gagner à ce jeu?
- Quelle stratégie pour jouer avec un minimum de risque?
Algorithme du jeu de hasard
Avant de se lancer dans l’écriture de script qui permet de résoudre cette problématique, on va rédiger un algorithme de résolution. Effectivement, on va déterminer une succession d’instructions qui permettent de répondre aux questions du problème.
Voici un algorithme qui permet de programmer ce jeu de hasard:
- Initialiser la cagnotte à 100 €
- Payer le prix de la partie, puis recalculer le total de la cagnotte
- Lancer le dé numéro 1 puis le dé numéro 2
- additionner la face apparue du dé1 avec celle du dé2
- si le résultat de l’addition est 2 ou 12
- alors on ajoute 20 € à la cagnotte
- Sinon, si le résultat l’addition est 3 ou 11
- alors on ajoute 5 € à la cagnotte
- Sinon, si le résultat l’addition est 4 ou 10
- alors on ajoute 4 € à la cagnotte
- Sinon, si le résultat l’addition est 5 ou 9
- alors on ajoute 3 € à la cagnotte
- Sinon, si le résultat l’addition est 6 ou 8
- alors on ajoute 2 € à la cagnotte
- Sinon
- alors on ajoute 1 € à la cagnotte
- Répéter les instructions de la ligne 2 à la ligne 16 tant que le total de l cagnotte est supérieur au prix de la partie
Script du jeu de hasard
from random import randint
cagnotte = 100
prix_partie = 4
historique = [cagnotte]
nbr_partie = 0
while cagnotte >= prix_partie and nbr_partie < 500:
nbr_partie = len(historique) - 1
cagnotte = cagnotte - prix_partie
de1 = randint(1,6)
de2 = randint(1,6)
if de1 + de2 == 2 or de1 + de2 == 12:
cagnotte = cagnotte+20
elif de1 + de2 == 3 or de1 + de2 == 11:
cagnotte = cagnotte+5
elif de1 + de2 == 4 or de1 + de2 == 10:
cagnotte = cagnotte+4
elif de1 + de2 == 5 or de1 + de2 == 9:
cagnotte = cagnotte+3
elif de1 + de2 == 6 or de1 + de2 == 8:
cagnotte = cagnotte+2
elif de1 + de2 == 7:
cagnotte = cagnotte+1
historique += [cagnotte]
print(historique)
print("Nombre de partie jouée : ", nbr_partie)
print("Gain maximal : ", max(historique))
print("Reste dans la cagnotte : ", historique[-1], " Euros")
import matplotlib.pyplot as plt
X = list(range(len(historique)))
style1 = {'family':'serif','color':'blue','size':20}
style2 = {'family':'serif','color':'darkred','size':15}
fig = plt.figure()
fig = plt.plot(X, historique)
fig = plt.plot(X, [historique[0] for k in X])
plt.grid()
plt.xlabel("Numéro de la partie jouée", style2)
plt.ylabel("Cagnotte", style2)
plt.show()
Exécution du script python
En exécutant ce script, on voit afficher certaines informations concernant la simulation. C’est avec l’instruction print() que j’affiche ces informations.
Tout d’abord on affiche l’historique des parties jouées. La variable historique est de type list. Cette liste contient le total de la cagnotte à la fin de chaque partie.
Ensuite on affiche le nombre de partie jouées. Ceci est calculé à partir de la longueur de la liste historique.
Puis, le gain maximal de la cagnotte, cela correspond au maximum atteint par la cagnotte. Et pour ce fait, j’ai utilisé la fonction max() qui permet de donner la valeur maximale d’une liste.
Et enfin, on affiche le total restant dan la cagnotte. J’utilise pour cela l’indice -1 qui permet d’obtenir la dernière valeur d’une liste de valeurs.
Visualisation graphique des résultats
La dernière partie du script permet de tracer le total de la cagnotte au fil du temps. En effet, Cela permet de visualiser graphiquement les résultats afin de voir les moments où la cagnotte augmente et ceux où elle diminue.
Les graphique ci-dessous montrent les résultats de 4 simulations effectuées avec les mêmes paramètres et mêmes conditions de jeu.
Et comme on peut le constater, aucune de ces simulations n’a permis de gagner à ce jeu. on finit toujours par perdre.
La simulation du jeu confirme les résultats théoriques de calcul de probabilité. Il y’a plus de risque de perdre à ce jeu que d’y gagner.
Merci pour cet article très complet et recherches comme d’habitude ! Il est important de connaître le détail d’un jeu de hasard ! Merci pr ton explication détaillée 🙂!