Générer des entiers aléatoires avec des probabilités
Je suis un peu confus sur la façon de générer des valeurs entières avec des probabilités.
Comme un exemple, j'ai quatre entiers avec leurs valeurs de probabilité: 1/0.4, 2/0.3, 3/0.2, 4/0.1
Comment puis-je générer ces quatre numéros en tenant compte de leurs probabilités?
- Si vous voulez savoir beaucoup de détails techniques sur la façon de le faire rapidement, c'est une grande ressource. Pour faire une pondéré choix parmi 4 choix, c'est totalement inutile si. keithschwarz.com/darts-dice-coins
- Voir aussi stackoverflow.com/questions/3094873
Vous devez vous connecter pour publier un commentaire.
Voici une astuce utile 🙂
notRandomNumbers
dynamiquement (compte tenu du nombre et leur poids ou de probabilité) et c'est la solution idéale à mon avis.Une simple approche naïve peut être:
Solution plus flexible, basé sur @bhups réponse. Ceci utilise le tableau de valeurs de probabilité (de poids). La somme de 'poids' des éléments doit être égale à 1.
Je suggère d'utiliser un contrôle continu de la probabilité et le reste du nombre aléatoire.
Cette fonction définit d'abord la valeur de retour pour le dernier indice possible et itère jusqu'à ce que le reste de la valeur aléatoire est plus petite que la probabilité réelle.
Les probabilités ont pour somme à un.
JS:
C'est la solution que j'ai trouver le plus souple, de la cueillette à l'intérieur de n'importe quel ensemble d'objets avec des probabilités:
JS: