// Histogrammes de probabilités d'occurences d'événements.
// On vérifie que l'histogramme théorique des probabilités d'événement
// correspond aux moyennes d'occurence de ces événements, s'il y en a beaucoup.

funcprot(0) // pour ne pas afficher de message suite à la redéfinition de fonctions.
 
function ex1()
//============
// Distribution de la loi de probabilité de la variable aléatoire  X,  où
// X = "résultat du lancé d'un dé"

// On lance un dé standard, non pipés, 
// histogramme de probabilités des événements
ax=[ 1, 2, 3, 4, 5, 6];
ay=[ 1, 1, 1, 1, 1, 1]/6;
scf(1);
clf();
bar(ax,ay, 0.7, 'b'); // 'b' = green  0.7 = largeur relative

// Moyenne et écart-type théorique.
Moyenne  = sum(ax .* ay);
Moyenne2 = sum(ax.^2 .* ay);
EcartType = sqrt(Moyenne2 - Moyenne^2);
printf("Moyenne=%8.4f  Ecart Type=%8.4f\n", Moyenne, EcartType);


// On lance un dé standard, non pipés, 
// histogramme de probabilités des événements
// Simulation numérique par statistiques
ax= [ 1, 2, 3, 4, 5, 6];
ay2=[ 0, 0, 0, 0, 0, 0];

N = 100000;  // nombre de lancés
Mat = floor(1+6*rand(1, N)); // liste des lancés. 1 lignes, N colonnes
//disp(Mat);

// Compte le nombre d'occurences de chacune des sommes de 2 à 12
for nn=1:6 do
   ay2(nn) = sum(Mat == nn);
end

ay2 = ay2 / sum(ay2); // Normalisation

// histogramme des occurences
scf(2);
clf();
bar(ax,ay2, 0.7, 'b'); // 'b' = green  0.7 = largeur relative

// Calcule de l'espérance (la moyenne) et de l'écart-type
Moyenne  = sum(ax .* ay2);
Moyenne2 = sum(ax.^2 .* ay2);
EcartType = sqrt(Moyenne2 - Moyenne^2);
printf("Moyenne=%8.4f  Ecart Type=%8.4f\n", Moyenne, EcartType);

// Valeurs théoriques :
// Moyenne = 3.5  et  Ecart Type = sqrt(91/6 - 3.5^2) = 1.7078251
endfunction


function ex2()
//============
// Distribution de la loi de probabilité de la variable aléatoire  X,  où
// X = "somme de deux dés"

// On lance deux dés standards, non pipés, 
// histogramme de probabilités des événements
ax=[ 2, 3, 4, 5, 6, 7, 8, 9,10,11,12];
ay=[ 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1]/36;
scf(1);
clf();
bar(ax,ay, 0.7, 'b'); // 'b' = green  0.7 = largeur relative

// Moyenne et écart-type théorique.
Moyenne  = sum(ax .* ay);
Moyenne2 = sum(ax.^2 .* ay);
EcartType = sqrt(Moyenne2 - Moyenne^2);
printf("Moyenne=%8.4f  Ecart Type=%8.4f\n", Moyenne, EcartType);

// On lance deux dés standards, non pipés, 
// histogramme de probabilités des événements
// Simulation numérique par statistiques
ax= [ 2, 3, 4, 5, 6, 7, 8, 9,10,11,12];
ay2=[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

N = 100000;  // nombre de lancés de deux dés
Mat = floor(1+6*rand(2, N)); // liste des paires de lancés. 2 lignes, N colonnes
//disp(Mat);

Somme2de = sum(Mat, 1); // liste des sommes des deux dés
//disp(Somme2de);

// Compte le nombre d'occurences de chacune des sommes de 2 à 12
for nn=2:12 do
   ay2(nn-1) = sum(Somme2de == nn);
end

ay2 = ay2 / sum(ay2); // Normalisation

// histogramme des occurences
scf(2);
clf();
bar(ax,ay2, 0.7, 'b'); // 'b' = green  0.7 = largeur relative

// Calcule de l'espérance (la moyenne) et de l'écart-type
Moyenne  = sum(ax .* ay2);
Moyenne2 = sum(ax.^2 .* ay2);
EcartType = sqrt(Moyenne2 - Moyenne^2);
printf("Moyenne=%8.4f  Ecart Type=%8.4f\n", Moyenne, EcartType);

// Valeurs théoriques :
// Moyenne = 7  et  Ecart Type = 2.4152...
endfunction


function ex3()
//============
// Distribution de la loi de probabilité de la variable aléatoire  X,  où
// X = "somme de trois dés"

// On lance trois dés standards, non pipés, 
// histogramme de probabilités des événements
// Simulation numérique par statistiques
ax= 3:18;
ay3=zeros(ax);
//disp(ay3);

N = 100000;  // nombre de lancés de deux dés
Mat = floor(1+6*rand(3, N)); // liste des triplets de lancés. 3 lignes, N colonnes
//disp(Mat);

Somme3de = sum(Mat, 1); // liste des sommes des trois dés
//disp(Somme3de);

// Compte le nombre d'occurences de chacune des sommes de 3 à 18
for nn=3:18 do
   ay3(nn-2) = sum(Somme3de == nn);
end

ay3 = ay3 / sum(ay3); // Normalisation

// histogramme des occurences
scf(2);
clf();
bar(ax,ay3, 0.7, 'b'); // 'b' = green  0.7 = largeur relative

// Calcule de l'espérance (la moyenne) et de l'écart-type
Moyenne  = sum(ax .* ay3);
Moyenne2 = sum(ax.^2 .* ay3);
EcartType = sqrt(Moyenne2 - Moyenne^2);
printf("Moyenne=%8.4f  Ecart Type=%8.4f\n", Moyenne, EcartType);

// Valeurs théoriques :
// Moyenne = 10.5  et  Ecart Type = ??? = environ 2.96
endfunction

