papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Un peu de statistique pour simuler des phénomènes aléatoires Dim 12 Mai 2019 - 0:26 | |
| Question 1 :Deux personnes se donnent rendez-vous entre 12h et 13h. On se demande quel sera en moyenne le temps d’attente de la 1ère personne arrivée ? Question 2 :Un fumeur a 2 boîtes de 40 allumettes dans ses poches. A chaque fois qu’il fume il prend une allumette au hasard dans une des 2 boîtes. Combien, en moyenne, restera t-il d’allumettes dans ses poches lorsqu’il aura vidé une des boites ? Question 3 On lance 5 dés. A chaque lancer on met de côté ceux qui ont fais "As" et on relance les autres jusqu’à obtenir 5 "As". Combien en moyenne faut-il lancer les dés ? J’avoue qu’il n’est pas évident de répondre à ces questions ni à proposer un algorithme pour les programmer. Mais on peut les simuler en Panoramic. Pour cela on exécute un nombre assez élevé de simulations. On calcule la somme des valeurs, et la somme des carrés. On en déduit la moyenne des valeurs et la moyenne des carrés. On calcule l’écart-type et l’intervalle de confiance à 95%. On affiche les résultats (qui peuvent être une surprise pour quelques uns) et on … médite. Voici ma solution: - Code:
-
rem ============================================================================ rem Simulations rem ============================================================================ rem 1ère simulation rem 2 personnes se donnent rendez-vous entre 12h et 13h. rem On se demande quel sera en moyenne le temps d’attente de la 1ère personne arrivée ? rem ============================================================================ rem 2ème simulation rem Un fumeur a 2 boîtes de 40 allumettes dans ses poches. rem A chaque fois qu’il fume il prend une allumette au hasard dans une des 2 boîtes. rem Combien, en moyenne, restera t-il d’allumettes dans ses poches lorsqu’il aura vidé rem une des boites ? rem ============================================================================ rem 3ème simulation rem On lance 5 dés. A chaque lancer on met de côté ceux qui ont fais "As" et on rem relance les autres jusqu’à obtenir 5 "As". rem Combien en moyenne faut-il lancer les dés ? rem ============================================================================
font_bold 0 : font_name 0,"arial" : font_size 0,12 Simulation_1() Simulation_2() Simulation_3()
end rem ============================================================================ SUB Simulation_1() dim_local Nb_simul : ' nombre de simulations dim_local sv, sc : ' somme des valeurs et somme des carrés dim_local arr1,arr2 : ' heures d'arrivée de la premère et de la deuxième personne dim_local c,e,k,mv,mc Nb_simul = 5000 for k = 1 to Nb_simul arr1 = int(rnd(61)) : ' Heure d'arrivée de la 1ère personne (entre 0 et 60 mn) arr2 = int(rnd(61)) : ' Heure d'arrivée de la seconde personne (entre 0 et 60 mn) c = abs(arr1 - arr2) : ' Temps d'attente de la première personne arrivée sv = sv + c : ' Somme totale du temps d'attente sc = sc + c*c : ' Somme des carrées next k mv = sv / Nb_simul : ' moyenne des valeurs mc = sc / Nb_simul : ' moyenne des carrés e = sqr((mc-mv*mv)/Nb_simul) : ' écart-type print "Simulation 1 :" print "Estimation ponctuelle : " + str$(mv) print print "Intervalle de confiance à 95% [ " + str$(mv-1.96*e) + " , " + str$(mv+1.96*e) + " ]" print : print "============================================================" END_SUB rem ============================================================================ SUB Simulation_2() dim_local Nb_simul : ' nombre de simulations dim_local sv, sc : ' somme des valeurs et somme des carrés dim_local boite1, boite2, e, k, r, mv, mc Nb_simul = 200 : ' pour réduire le temps d'exécution qui est assez long ! for k = 1 to Nb_simul boite1 = 40 boite2 = 40 while 1 = 1 if rnd(1) < 0.5 : ' 50% de change pour utiliser ... boite1 = boite1 - 1 : ' ... la 1ère boîte else : ' ou boite2 = boite2 -1 : ' la seconde boîte end_if if (boite1 = 0) or (boite2 = 0) then exit_while : ' si l'une de deux boîte devient vide on arrête end_while r = boite1 + boite2 : ' calcul du reste (boite1 ou boite2 vaut zéro) sv = sv + r : ' la somme des valeurs sc = sc + r*r : ' la somme des carrés next k mv = sv / Nb_simul : ' la moyenne des valeurs mc = sc / Nb_simul : ' la moyenne des carrés e = sqr((mc-mv*mv)/Nb_simul) : ' l'écart-type print "Simulation 2" print "Estimation ponctuelle : " + str$(mv) print print "Intervalle de confiance à 95% [ " + str$(mv-1.96*e) + " , " + str$(mv+1.96*e) + " ]" print : print "============================================================" END_SUB rem ============================================================================ SUB Simulation_3() dim_local Nb_simul : ' nombre de simulations dim_local sv, sc : ' somme des valeurs et somme des carrés dim_local des,lancers, k, k1, e, mv, mc Nb_simul = 500 for k = 1 to Nb_simul des = 5 : ' 5 dés au départ lancers = 0 while 1 = 1 for k1 = 1 to des if int(1+rnd(6)) = 1 then des = des - 1 : exit_for : ' si on a obtenu un "As" on arrête la boucle next k1 lancers = lancers + 1 : ' on incrémente le nombre des lancers if des = 0 then exit_while : ' si il n'y a plus de dés à lancer on arrête end_while sv = sv + lancers : ' la somme des valeurs sc = sc + lancers * lancers : ' la somme des carrés next k mv = sv/Nb_simul : ' la moyenne des valeurs mc = sc/Nb_simul : ' la moyenne des carrés e = sqr((mc-mv*mv)/Nb_simul) : ' l'écart-type print "Simulation 2" print "Estimation ponctuelle : " + str$(mv) print print "Intervalle de confiance à 95% [ " + str$(mv-1.96*e) + " , " + str$(mv+1.96*e) + " ]" print : print "============================================================" END_SUB rem ============================================================================
| |
|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Un peu de statistique pour simuler des phénomènes aléatoires Dim 12 Mai 2019 - 7:28 | |
| Merci Papydall ! Les résultats peuvent effectivement surprendre. Bon dimanche ensoleillé ! (En Tunisie, il est prévu 25° ! Les veinards !) | |
|