Probabilités

Simulations

  1. Énoncé du problème

    Quand il est trop compliqué de calculer des probabilités, nous pouvons en avoir une idée en effectuant une simulation numérique du problème. Bien évidement, effectuer une seule simulation ne suffira pas, il faut effectuer un grand nombre de simulations pour avoir une idée des probabilités. En pratique, il y aura donc deux phases :

    Il faudra aussi collecter et interpréter les résultats. Bien évidemment, ces résultats ne nous donneront pas la valeur des probabilités cherchées, ils nous donneront un ordre de grandeur. Plus le nombre de simulations sera élevé, plus l'ordre de grandeur sera précis.

    Nous allons nous intéresser au problème suivant : des couples désirent avoir des enfants (mais pas plus de 8), et veulent exactement un garçon. Aussi ils vont avoir des filles, et s'arrêter au premier garçon ou au huitième enfant.
    Nous aurons donc des familles à un seul enfant (un garçon), des familles avec une fille suivie d'un garçon, des familles à deux filles suivies d'un garçon ... et des familles à 8 filles et pas de garçon.
    Il y a deux questions : Quelle sera la répartition de ces familles, et cette stratégie change-t-elle le rapport filles-garçons ?

  2. L'algorithme

    Nous allons choisir un modèle de naissances : un nombre aléatoire est égal à 0 ou à 1. Si c'est 0, il correspond à la naissance d'un garçon, si c'est 1 à celle d'une fille.
    Pour représenter une famille, nous tirons au sort des nombres aléatoires successifs. Tant que ce sont des 1, nous continuons, quand c'est 0 ou qu'il y a huit 1, nous nous arrêtons.
    Même si la connaissance du nombre de filles (de 0 à 8) permet de connaître totalement la famille, il est plus commede d'avoir une variable pour le nombre d'enfants (qui pourra aller de 1 à 8) et une variable pour le nombre de garçons (qui vaudra 0 ou 1)

    	Variables : nbr_enfants, nbr_garcons, nbr_filles
    	Initialisation : nbr_enfants = 0, nbr_garcons = 0
    	Traitement : Tant que (nbr_enfants < 8 et nbr_garcons = 0) faire
    					tirer un nombre aléatoire égal à 0 ou à 1
    					Si ce nombre vaut 0 alors nbr_garcons augmente de 1
    					fin si
    					nbr_enfants augmente de 1
    					fin tant que
    					nbr_filles = nbr_enfants-nbr_garcons
    	Sortie : afficher nbr_filles

    Ici, nous n'avos simulé qu'une famille. Pour avoir une idée des probabilités, il faut répeter cette simulation un grand nombre de fois.
    Comment enregistrer les résultats ?
    Le plus simple est de faire une liste, dont le premier terme sera les familles avec 0 filles, le second les familles avec une fille ... et le neuvième les familles avec 8 filles.
    Au début, la liste contiendra 9 fois zéro, et à chaque simulation de famille, le terme correspondant de la liste augmentera de 1.
    Si nous appelons simuler_famille l'algorithme précédent, la simulation complète sera donc :

    	Variable : liste_familles (9 entiers)
    	Initialisation : Tous les termes de liste_familles sont nuls
    	Traitement : Répéter 1000 fois
    					Simuler_famille
    					Augmenter de 1 le terme de liste_familles correspondant au nombre de filles obtenues
    				 fin répéter
    	Sortie : afficher liste_familles
  3. Implémentation de l'algorithme dans la calculatrice

    Les nombres de filles, garçons et enfants seront enregistrés dans les mémoires F, G, N.
    Pour chaque nombre de filles, les effectifs des familles seront enrehistrés dans la liste L1.
    Comme la numérotation des listes commence à 1, L1(1) sera le nombre de familles à 0 filles, L1(2) les familles à 1 fille, jusqu'à L1(9) pour les familles à 8 filles. Le programme est en rouge, les commentaires en blanc

    	9 STO dim(L1)					(On crée une liste de longueur 9)
    for(K,1,9) (attention, des virgules et non le point décimal)
    0 STO L1(K) (Mise à 0 de la liste L1)
    end (fin de la boucle, end est dans prgm)
    for(K,1,1000) (les 1000 répétitions)
    0 STOF (Mise à 0 des variables F, G, N)
    0 STOG
    0 STON
    while(N<8 et G=0) (<, =, et se trouvent dans 2nde test, while dans prgm)
    nbrAléatEnt(0,1)STOA (nbrAléatEnt est dans MATH PROB)
    if A=1 (on a obtenu un garçon)
    then (if et then sont dans prgm)
    G+1STOG (le nombre de garçons augmente de 1)
    end N+1STON (le nombre d'enfants augmente de 1)
    end (la famille est simulée)
    N-G STOF (on compte les filles)
    L1(F+1)+1STOL1(F+1) (on met à jour la liste)
    end (fin des 100 simulations)
    L1 (on affiche le résultat)

    Ce programme est vraiment très long à exécuter.
    Finalement, peut-on penser que la répartition des sexes a été bouleversées ?