Bonjour à tous,
J'ai le problème suivant: j'ai n villes et m personnes. Je connais la probabilité pour une personne d'habiter chacune des villes. On note p_i la probabilité pour une personne d'habiter la ville i. On a bien \sum_{i=1}^n p_i = 1
Le problème c'est que je ne peux pas arrondir les m \times p_i pour me donner le nombre de personnes habitant dans chaque ville. J'ai donc 2 méthodes mais je m'interroge sur l'exactitude de celles ci d'un point de vu mathématique:
méthode 1:
méthode 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Hab : tableau contenant le nombre d'habitants dans les différentes villes Prob : tableau des probabilités d'habiter dans chaque ville Pour i=1 à n Prob[i] <- m * Prob[i] Fin Pour cpt <- m Pour i=1 à n Hab[i]<- Hab[i] + partie_entiere_inferieure(Prob[i]) cpt <- cpt - partie_entiere_inferieure(Prob[i]) Prob[i] <- Prob[i] - partie_entiere_inferieure(Prob[i]) Fin Pour Tant que cpt > 0 Soit i l'indice du maximum dans Prob Prob[i] <- 0 Hab[i] <- Hab[i] + 1 cpt <- cpt - 1 Fin Tant que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Hab : tableau contenant le nombre d'habitants dans les différentes villes Prob : tableau des probabilités d'habiter dans chaque ville ProbCum : tableau des probabilités cumulées ProbCum[0] <- Prob[0] Pour i=2 à n ProbCum[i] <- ProbCum[i-1]+Prob[i] Fin Pour Pour j=1 à m nombre <- Tirer un nombre aléatoire entre 0 et 1 i <- 1 Tant que ProcCum[i] < nombre i <- i + 1 Fin Tant que Hab[i] <- Hab[i] + 1 Fin Pour
Partager