// 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 = "Nombre de piles lors d'un lancé de  K  pièces de monnaie"

K = 100;

// On lance  K  pièces de monnaie et on compte combient de pile on obtient
// Simulation numérique par statistiques
// histogramme de probabilités des événements
ax = 0:K;
ay = zeros(ax);

N = 1000;  // nombre de lancés des  K  pièces

Mat = floor(2*rand(K, N)); // liste des lancés. K lignes, N colonnes
// Pile == 1,  Face == 0
//disp(Mat);

SommePile = sum(Mat, 1); // liste des sommes d'occurence de Pile
//disp(SommePile);


// Compte le nombre d'occurences de chacun des événements élémentaires
kk = 0;
for nn=ax do
   kk = kk+1;
   ay(kk) = sum(SommePile == nn);
end

ay = ay / sum(ay); // Normalisation

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

// Calcule de l'espérance (la moyenne) et de l'écart-type
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);

// Valeurs théoriques :
// Moyenne = K/2  et  Ecart Type = sqrt(K * 0.5 * 0.5)
//endfunction

