histoire d'arrondi de probabilité
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:
Code:
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 |
méthode 2:
Code:
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 |