

function [T,S] = roulette(a,b,p)
    S= 2*grand(1,1,"bin",1,p)-1+a;          //on initialis
    
    T = 1;
    while ((S>0) & (S<b+a)) do              //Si le joueur n'est niruiné, ni arrivé à a+b, alors il rejoue
        S = S+2*grand(1,1,"bin",1,p)-1    // alors +1 ou -1 avec proba p  ou 1-p
        T = T+1;                                        // il a joué une fois de plus
    end;
endfunction

a = 20;
b = 10;
p = 1/2;
n = 1000;
t = zeros(1,n);
s = zeros(1,n);
for i= 1:n,                              
    [T,S] = roulette(a,b,p);        // on le fait n fois, et on stocke les deux valeurs
    t(i) = T;
    s(i) = S;
end;

//E[T] ~
et = mean(t);                      // estimer l'espérance par la moyenne empirique sur n simulations
//pr(S = 0) ~
p0 = sum(s==0)/n;               // estimer la proba sur la proportion sur n simulations              
//pr(S = a+b)
pg = sum(s==(a+b))/n;                // estimer la proba sur la proportion sur n simulations

l = ascii(10)                                                          
              // Pour le saut de ligne pour afficher les résultats
// comparaison dans le cas p=1/2:
disp("E[T] "+l+" Theorique : " + string(a*b)+l+" Estimée par MC :"+string(et)+l)

disp("P(S=0) "+l+" Theorique : "+string(b/(a+b))+l+" Estimée par MC :"+string(p0)+l)

disp("P(S = a+b) "+l+" Theorique : "+string(a/(a+b))+l+" Estimée par MC: "+string(pg)+l)



p =18/37;
a = 1000;
b = 100;
n = 500;
t = zeros(1,n);
s = zeros(1,n);
for i= 1:n,
    [T,S] = roulette(a,b,p);
    t(i) = T;
    s(i) = S;
end;
pg = sum(s==(a+b))/n;
disp("Proba d''y parvenir : "+string(pg))

// on remarque que pour gagner 10 euros avec 100, on a presque 60% de chances, mais environ 4 chances sur 1000 pour gagner 100 avec 1000.


