AlgoBox : Somme des points obtenus lors de lancers de 3 dés

Présentation de l'algorithme :
Principe de la simulation du lancer de 3 dés :
  • La fonction random() permet d'obtenir un nombre décimal pseudo-aléataoire compris entre 0 et 1.
    Pour simuler le lancer d'un dé, on utilise : floor(6*random()+1) (la fonction floor() donne la partie entière)
  • Pour simuler le lancer de 3 dés et calculer la somme des points obtenus, il faut utiliser :
    floor(6*random()+1)+floor(6*random()+1)+floor(6*random()+1)
    Remarque : il ne faut pas utiliser 3*(floor(6*random()+1)) car cela reviendrait à supposer que les 3 dés donnent le même nombre de points.
Stockage des données :
  • Pour stocker le nombre de fois où apparait une certaine somme de points, on utilise une liste appelée issue dans l'algorithme.
  • Par exemple, issue[5] représente le nombre de fois où l'on a obtenu 5 points en simulant les lancers des 3 dés.
    A chaque fois qu'on obtient une somme de 5 points, on augmente de 1 la valeur de issue[5].
  • Remarque : lors du lancer de 3 dés, la somme des points obtenue est forcément comprise entre 3 à 18.

L'algorithme ci-dessous simule 100000 lancers de 3 dés, calcule les fréquences observées pour la somme des points obtenus et trace le diagramme en bâtons de ces fréquences.

Fichier AlgoBox associé : lancersdes.alg (faire un clic-droit et utiliser l'option "enregistrer sous" pour télécharger le fichier)


Tester l'algorithme
Cliquer sur ce bouton pour exécuter l'algorithme : 

Résultats

Code de l'algorithme
1   VARIABLES
2     issue EST_DU_TYPE LISTE
3     i EST_DU_TYPE NOMBRE
4     somme EST_DU_TYPE NOMBRE
5     propor EST_DU_TYPE NOMBRE
6   DEBUT_ALGORITHME
7     POUR i ALLANT_DE 3 A 18
8       DEBUT_POUR
9       issue[i] PREND_LA_VALEUR 0
10      FIN_POUR
11    POUR i ALLANT_DE 1 A 100000
12      DEBUT_POUR
13      somme PREND_LA_VALEUR floor(6*random()+1)+floor(6*random()+1)+floor(6*random()+1)
14      issue[somme] PREND_LA_VALEUR issue[somme]+1
15      FIN_POUR
16    POUR i ALLANT_DE 3 A 18
17      DEBUT_POUR
18      propor PREND_LA_VALEUR issue[i]/1000
19      AFFICHER i
20      AFFICHER " points -> "
21      AFFICHER propor
22      AFFICHER " % des cas observés"
23      TRACER_SEGMENT (i,0)->(i,propor)
24      FIN_POUR
25  FIN_ALGORITHME