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 ?
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
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 ?