Accueil > CmathOOoCAS > Activités utilisant CmathOOoCAS > Le lièvre et la tortue

Le lièvre et la tortue

samedi 9 juillet 2022, par Christophe Devalland

Le lièvre et la tortue font la course.

Voici les règles de cette course :

On lance un dé à six faces non truqué.
Si le 6 sort, le lièvre fait un bond jusqu’à la coupe et gagne la course.
Sinon, la tortue avance d’une case.
Si la tortue atteint la quatrième case, elle gagne la course.
On relance le dé jusqu’à ce qu’il y ait un gagnant.

Lequel des deux a le plus de chances de gagner la course ?

Les règles du jeu sont telles qu’il n’est pas évident de savoir, a priori, lequel des deux a le plus de chances de gagner la course. Dans cette activité, quelques programmes Python servent à modéliser la situation et à conjecturer la réponse à ce problème grâce au principe de l’estimation d’une probabilité par une fréquence observée sur un échantillon.

Les compétences mises en œuvre dans cette activité couvrent la totalité du paragraphe « Échantillonnage » du programme de Seconde :

Commençons par définir une fonction qui simule une course :

def uneCourse():
  for i in range(4):
    if randint(1,6)==6:
      return lièvre
  return tortue

Tapons ce code dans la fenêtre « Commandes CAS » :

Après compilation, la fonction est utilisable dans le tableur, comme toute autre fonction intégrée à LibreOffice :

Dans cette feuille de calcul, on simule 40 courses. Est-ce suffisant pour conjecturer qui gagnera le plus souvent cette course ?
Pour répondre à cette question, nous pouvons relancer ces 40 simulations en forçant le recalcul des cellules avec la combinaison de touches CTRL+MAJ+F9. Après plusieurs actualisation de la feuille de calculs, nous constatons que la fluctuation d’échantillonnage est très marquée et que les fréquences calculées ne permettent pas de deviner qui est avantagé dans cette course.

Augmentons donc le nombre de courses pour approcher les fréquences de gains grâce à la loi des grands nombres. Le code suivant permettra de compter le nombre de victoire de la tortue après n courses :

def courses(n):
  t=0
  for j in range(n):
    if uneCourse()==tortue:
      t=t+1
  return t

Tapons ce code dans la fenêtre « Commandes CAS » :

Son utilisation dans CALC :

On constate que la fréquence de gain de la tortue semble se stabiliser vers 0,482 pour 100000 courses.
La construction d’un arbre pondéré peut permettre de déterminer que la probabilité de gain de la tortue vaut exactement ${\left( \frac{5}{6}\right)}^4$, ce qui est cohérent avec la valeur trouvée expérimentalement, dans le respect de la loi des grands nombres.

Nous allons maintenant, conformément aux capacités attendues par le programme, simuler N échantillons de taille n de cette expérience aléatoire à deux issues (la tortue gagne ou perd). On admet que la probabilité du gain p vaut 0,482 à $10^{-3}$ près. On appelle f la fréquence de gain observée dans un échantillon. On veut calculer proportion des cas où l’écart entre p et ƒ est inférieur ou égal à $\frac{1}{\sqrt{n}}$.

Le code suivant permet de renvoyer cette proportion :

def simuler(N,n):
  c=0
  for k in range(N):
    frequence=courses(n)/n
    if abs(frequence-0.482)<=1/sqrt(n):
      c=c+1
  return c/N

Tapons ce code dans la fenêtre « Commandes CAS » :

Son utilisation dans CALC :

On constate une proportion proche de 95%.

Un message, un commentaire ?

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

ConnexionS’inscriremot de passe oublié ?