Vous êtes ici : Accueil > Salle du prof > Il est libre Math > Croix-Pile : une simulation avec R
Publié : 11 mars 2008

Croix-Pile : une simulation avec R

Un extrait de l’Encyclopédie de Diderot et d’Alembert suivi d’un programme analysant une liste des issues de 200 lancers de pièce.

CROIX OU PILE, (analyse des hasards)

Ce jeu qui est très-connu, & qui n’a pas besoin de définition, nous fournira les réflexions suivantes. On demande combien il y a à parier qu’on amenera croix en jouant deux coups consécutifs. La réponse qu’on trouvera dans tous les auteurs, & suivant les principes ordinaires, est celle-ci. Il y a quatre combinaisons,

De ces quatre combinaisons une seule fait perdre & trois font gagner ; il y a donc 3 contre 1 à parier en faveur du joüeur qui jette la piece. S’il parioit en trois coups, on trouveroit huit combinaisons dont une seule fait perdre, & sept font gagner ; ainsi il y auroit 7 contre 1 à parier.

Voyez COMBINAISON & AVANTAGE [1].

Cependant cela est-il bien exact ? Car pour ne prendre ici que le cas de deux coups, ne faut-il pas réduire à une les deux combinaisons qui donnent croix au premier coup ? Car dès qu’une fois croix est venu, le jeu est fini, & le second coup est compté pour rien. Ainsi il n’y a proprement que trois combinaisons de possibles :

- Croix, premier coup.
- Pile, Croix, premier & second coup.
- Pile, pile, premier & second coup.

Donc il n’y a que 2 contre 1 à parier. De même dans le cas de trois coups, on trouvera.

- Croix.
- Pile, croix.
- Pile, pile, croix.
- Pile, pile, pile.

Donc il n’y a que 3 contre 1 à parier : ceci est digne, ce me semble de l’attention des Calculateurs, & iroit à réformer bien des regles unanimement reçues sur les jeux de hasard.


La liste du livre :

7 2 4 3 2 7 5 5 4 9 8 0 8 2 2 6 5 4 0 4 5 1 7 5 2 7 0 0 5 8 5 8 4 7 7 2 3 4 9 1 2 5 7
0 3 8 4 9 2 6 4 3 1 2 8 8 0 4 8 6 6 6 3 3 8 2 2 6 5 2 8 5 8 1 2 7 0 9 9 6 6 7 4 0 7 1
9 7 0 9 7 2 3 0 4 1 4 0 2 2 7 4 1 8 9 2 3 7 7 0 6 3 7 6 4 4 5 5 3 4 0 2 4 4 9 7 2 0 4
1 3 4 4 5 7 1 6 8 1 3 2 4 6 3 4 4 3 7 3 7 3 8 3 9 6 9 9 7 2 0 6 4 8 8 0 0 2 3 1 1 1 2
1 8 0 3 5 1 0 5 8 4 6 1 3 9 9 4 2 2 5 9 6 2 0 4 3 6 1 7

Un programme pour l’analyser :

analyse<-function(tabl)
{i<-1;succes<-0;gain1<-0;gain2<-0;perd<-0;tbl<-tabl;lg<-length(tbl);
        while(i<lg)
        {if(estimpair(tbl[i])==TRUE)
                {succes<-succes+1;gain1<-gain1+1;i<-i+1}
                else
                {if(estpair(tbl[i])&&estimpair(tbl[i+1])==TRUE)
                                {succes<-succes+1;gain2<-gain2+1} else {perd<-perd+1};i<-i+2}};if((i==lg)&&estimpair(tbl[i])){succes<-succes+1;gain1<-gain1+1}
                                ;tt<-gain1+gain2+perd;barplot(c(gain1/tt,gain2/tt,perd/tt),col=c("lightblue", "mistyrose","lightyellow"),names.arg=c("gain 1","gain 2", "perdu"));print(c("parties gagnées",succes,"1 coup gagné",gain1,"gagné en 2 coups ",gain2,"perdu en 2 coups",perd))}/code>

et les sous-programmes nécessaires :
<code>estpair<-function(entier)
{demi<-entier/2;meme<-2*as.integer(demi);
if (entier==meme) TRUE else FALSE}
estimpair<-function(entier)
{if (estpair(entier)) FALSE else TRUE}

Le dépouillement des 200 issues donne :

> analyse(simul)
[1] "parties gagnées"   "91"                "1 coup gagné"      "60"              
[5] "gagné en 2 coups " "31"                "perdu en 2 coups"  "39"

On passe à 2000 lancers :

> analyse(sample(0:9,2000,TRUE))
[1] "parties gagnées"   "989"               "1 coup gagné"      "654"              
[5] "gagné en 2 coups " "335"               "perdu en 2 coups"  "338"  

À 20 000...

> analyse(sample(0:9,20000,TRUE))
[1] "parties gagnées"   "9905"              "1 coup gagné"      "6648"            
[5] "gagné en 2 coups " "3257"              "perdu en 2 coups"  "3419"

Et comme on manque pas d’air, à 200 000 :

> analyse(sample(0:9,200000,TRUE))
[1] "parties gagnées"   "100005"            "1 coup gagné"      "66628"            
[5] "gagné en 2 coups " "33377"             "perdu en 2 coups"  "33309"  

Documents joints

Notes

[1c’est un renvoi dans l’encyclopédie