Ad esempio con:
Popolazione totale = 400000
Numero di villaggi = 800
La popolazione media è di 500
Come posso randomizzare la quantità di persone in ogni villaggio usando una deviazione specificata (ad esempio + -50) in modo che sia uguale alla popolazione totale?
Ho trovato una soluzione utilizzando questa normale classe di distribuzione
Fondamentalmente ho creato una distribuzione normale e ho usato la funzione Probability Density per determinare la quantità di villaggi a ciascun livello discreto (fino a quando il totale della popolazione è stato colpito).
Questo è qualcosa che ho scritto rapidamente per dimostrare:
NormalDist dist = new NormalDist(500.0, 50.0);
int popX = 500;
int numberOfPopXVillages = Convert.ToInt32(Math.Floor(dist.PDF(popX) * 800)); ;
int totalSum = 0;
do
{
Console.WriteLine(numberOfPopXVillages);
totalSum += popX * numberOfPopXVillages;
totalSum += (1000 - popX) * numberOfPopXVillages;
++popX;
numberOfPopXVillages = Convert.ToInt32(Math.Floor(dist.PDF(popX) * 800));
} while (numberOfPopXVillages >= 5);
Console.WriteLine(totalSum);
La somma totale qui è 400000. L'algoritmo non è perfetto ma continuerò a lavorarci su. Grazie a tutti.