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