Supposons que je souhaite sélectionner aléatoirement un nombre n compris entre 0 et 30, où la distribution est arbitraire et non uniforme. Chaque nombre a un poids correspondant P (n): P (0) = 5, P (1) = 1, P (2) = 30, P (3) = 25, et ainsi de suite. Comment faire une sélection aléatoire de cet ensemble, de sorte que la probabilité de sélectionner un nombre est proportionnelle à son poids?Sélection probabiliste à partir d'un ensemble
Qu'est-ce que ce type de sélection aléatoire est appelé?
Je peux voir une façon de la mettre en œuvre:
- plus d'une table de conversion V où V (n) = V (n-1) + P (n); avec le cas de base V (0) = P (0).
- générer un nombre aléatoire X avec une répartition uniforme entre 0 et la valeur maximale de V.
- Trouver la plus petite valeur de n tel que V (n)> X.
est quelque chose comme ça déjà mis en œuvre dans une bibliothèque? (L'utilisation de Perl.)
Ah! Ces mots clés sont exactement ce dont j'avais besoin. Merci. – PBJ
J'ai pu trouver un module CPAN existant pour cela (bien que ce ne soit pas trop populaire): List :: Util :: WeightedChoice http://search.cpan.org/~dsadinoff/List-Util-WeightedChoice-0.06/ lib/List/Util/WeightedChoice.pm – PBJ