Tombé là-dessus un peu par hasard, c'est la simulation de la mise en place d'une routine à la roulette anglaise au casino.
En plus, ça marche pas mal sur mes premières simulations (on peut gagner un peu de sous), si on sait s'arrêter.
Voilà le topo : on mise sur un élément du couple impair/pair, rouge/noir ou passe/manque, qui permet l'alternative
suivante à partir d'une mise M de départ :
- Si le choix sort, on gagne 2 fois la mise (on récupère en fait sa mise et on en gagne une autre).
- Sinon on pert sa mise.
La martingale est alors la suivante :
- si on a perdu avec une mise M, on mise alors avec une valeur 2 M.
- si on a gagné, on repart avec la mise minimale autorisée.
Du coup, si on gagne après une perte : on récupère 4M après avoir misé M (et perdu) puis 2M (et gagné). Résultat final, on a gagné M.
Si on perd à nouveau, on remet 4M en mise et ainsi de suite.
Et après n-1 pertes et un gain au coup n, on a misé (1+2+....+2^(n-1))M=((2^n)-1)M et gagné (2^n)M. On a donc toujours notre gain de M.
L'espérance mathématique est positive dans le cas d'un tirage équilibré en probabilité (et si on a beaucoup de fonds au départ car après 20 coups on en est à plus de 1 million de mise initiale) : ce qui n'est pas le cas au casino puisqu'il y a 37 cases sur la roulette (18 paires, 18 impaires et le 0 qui fait gagner la banque à tous les coups). La chance de gain à chaque coup est donc de 18/37. Autre point : il y a un plafond de mise autorisé, et si on l'atteint en ayant perdu, on perd sa mise et on repart de la mise minimale (ouille...).
Dans les simulations, systématiquement, on perd tout, mais en ayant eu quasi systématiquement un pic au-dessus de l'apport initial à un moment donné.
Le premier objectif ici est donc à partir d'une "fortune" de départ (l'apport disponible), d'un plafond autorisé, d'une mise minimale de simuler les différents coups et d'obtenir ensuite le nombre de coups pour tout perdre (ce qui arrivera normalement), la fortune maximale qui aura été atteinte.
Le second est pourquoi pas, de faire plusieurs simulations en chaine pour calculer moyennes et minima/maxima atteints sur le nombre de tours et fortunes possédées.
Proposition pour Casio Z-1GR:
Le sous programme de simulation du premier objectif :
Code : Tout sélectionner
210 IF fm<f THEN fm=f //calcul de la fortune maximale
220 m=ms:f=f-m //mise initiale (ms est saisie par l'utilisateur)
230 IF f<0 THEN 260 //sommes-nous ruiné ?
240 t=t+1:r=INT(RAN#*37):IF r MOD 2 THEN f=f+m*2:GOTO210 //Calcul du tirage et situation si on gagne
250 m=m*2:IF m>f or m>p THEN 220 ELSE f=f-m:GOTO240 //si on perd, on double la mise, sauf si on ne peut plus
260 PRINT "n:";i;TIMER/10;"t:";t;"f:";fm:RETURN //petit affichage du résultat (n° de la simulation, le temps écoulé, le nombre de coups et la fortune maxi atteinte).
Le programme principal
Code : Tout sélectionner
10 INPUT"Fortune";f1:INPUT"Plafond";p:INPUT"mise";ms:INPUT"tours:";n:TIMER=0:t1=0:t2=0:m2=0:c=0:mf=0:mg=0:g=0
//prise des paramètres et initialisation des variables
20 FOR i=1 TO n:t=0:f=f1:fm=0:GOSUB220:m2=m2+t:c=c+t*t:g=g+fm:IF t>t1 THEN t1=t
// on lance une simulation (il y en a n) et on cumule les résultats (m2 somme des coups, g somme des fortunes max)
21 IF t2=0 THEN t2=t ELSE IF t<t2 THEN t2=t
// t1 c'est le nombre max de coups, t2 le nombre min.
22 IF mf<fm THEN mf=fm //fortune max
23 IF mg=0 THEN mg=fm ELSE IF fm<mg THEN mg=fm //fortune min (c'est le minimum des fortunes max des différentes simul)
25 NEXT i
30 m1=m2/n:PRINT "Cps moy";INT(m1);"EcartT";INT(SQR(c/n-m1*m1)):PRINT"Cps>";t1;"Cps<";t2:
PRINT TIMER/10;"s f>";mf;"f<";mg;"f";INT(g/n)
// affichage des résultats : Coups moyens pour perdre son apport et Ecart Type
// Nombre max de coups et nombre min
// Tps écoulé et Fortune max, min et moyenne.
40 END
Exemple :
Fortune 50 (on part petit), Plafond 40, mise 1 (j'ai un casino qui prend une mise mini de 1€), tours 50 (on va donc faire 50 simulations complètes) et zou, on regarde défiler les résultats de simulation (bon, ça va pas super vite, y'en a pour une bonne dizaine de minutes).
Petite approximation de l'espérance mathématique pendant que ça tourne : on a (19/37)^6 chances de perdre 63€ (perte moyenne donc de 1,16€) et 1-(19/37)^6 chances de gagner 1 € (donc un gain moyen de 0,98 €). D'où une perte globale de 0,18€ par tour. Ce qui normalement doit nous ramener les 50€ de mise initiale à 0 en environ 280 coups.
Résultats : Coups moyens joués : 360 (écart type de 503, il y a des valeurs extrêmes très éloignées)
Nombre max de coups 2990 (!) min de 33 (il y a une une simulation avec 2990 lancers de roulette !)
Temps écoulé : 877,2 s (près de 15 mn), fortune max atteinte 423 €, min 24 € (il y a eu des simultations avec des pertes immédiates), moyenne de 109 € (donc on peut bien gagner de l'argent...)
Bon amusement pour ceux qui veulent approfondir ces réalisations de simulation.
Par contre, je ne suis pas responsable de pertes réelles au casino !