Jeux du Chevalier de Méré

Premier Jeu

Le Chevalier de Méré a vécu à la cour du roi Louis XIV

On lance 4 fois un dé et on compte le nombre de fois où est sorti le nombre 6

Si il y a au moins un six alors la banque a gagné sinon le joueur a gagné

 
 nb_six <- 0
 Répéter 4 fois
 début
     On lance un dé
     si dé = 6
     début
        nb_six <- nb_six + 1
    fin
 fin
 si nb_six >= 1
 début
     afficher("La banque a gagné")
 sinon
     afficher("le joueur a gagné")         
 
 

On peut simplifier cet algorithme car on peut arrêter la répétition dès qu'on obtient un six, tout en ne dépassant pas les 4 répétitions

 
 de         <- 0
 nb_lancers <- 0
 Tant que de  différent de   6 et nb_lancers < 4 
 début
     de <- tirer un nombre au hasard entre 1 et 6
     nb_lancers <- nb_lancers +  1
 fin
 si de = 6
 début
     afficher("La banque a gagné")
 sinon
     afficher("le joueur a gagné")
     
     

Commentaires:

  1. On affecte la variable de d'une valeur égale à 0 au début de la répétition, cela permet de passer le test de répétition et de commencer la répétition
  2. Le test de répétition est "composé" de deux expressions avec l'aide du connecteur logique et, ainsi l'expression "de différent de 6 et nb_lancers < 4" est vraie lorsque chaque expression qui la compose, c'est à dire, "de différent de 6" et "nb_lancers < 4" sont vraies toutes les deux
  3. On verra la prochaine fois un autre connecteur logique le ou

La traduction en python est

 
 
from random import *

de         = 0
nb_lancers = 0
while de != 6 and nb_lancers < 4:
    de = randint(1,6)
    nb_lancers = nb_lancers + 1
if de == 6:
    print("La banque a gagné")
else:
    print("le joueur a gagné")
 


 
 

Exercice

  1. Compléter le programme précédent pour simuler 1000 parties et compter le nombre de fois où la banque a gagné

    (Introduire une variable significative)

    Ensuite calculer la fréquence de gain de la banque pour 1000 parties et afficher cette fréquence

  2. Après plusieurs essais que peut on dire? Qui semble avoir plus de chances à ce jeu la banque ou le joueur?

Deuxième Jeu

Vous allez aider le Chevalier de Méré à mettre au point un nouveau jeu. Il s'agit de répéter un nombre N de fois le lancer de deux dés, (N est une valeur autour de 20), cette fois ci la banque gagne lorsqu'il y a au moins un double six. Vous devez trouver la plus petite valeur de N de telle sorte que la banque a plus de chance de gagner que le joueur

Modifier le programme python du premier jeu afin de lancer deux dés cette fois-ci, en ayant deux variables de1 et de2

Il s'agit aussi de modifier la condition de répétition du "while": Dans un premier temps se contenter d'écrire:

while not(de1 == 6 and de2 == 6) and nb_lancers < N:

Dans un second temps prouver de manière graphique avec le langage des évènements du calcul des probabilités que

$\overline{A \cap B} = \overline{A} \cup \overline{B}$

Autrement dit not(de1 == 6 and de2 == 6) est de1 != 6 or de2 != 6

Que retenir ?

  1. Les tests qui contrôlent une boucle Tant que peuvent être composés à l'aide de connecteurs logiques
  2. Pour deux expressions A, B l'expression "A et B" est vraie lorsque chacune des expressions A,B est vraie