Maison  >  Article  >  Java  >  Comment puis-je implémenter la sélection aléatoire pondérée en Java ?

Comment puis-je implémenter la sélection aléatoire pondérée en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 19:58:03628parcourir

How can I implement Weighted Random Selection in Java?

Sélection aléatoire pondérée en Java

Lors de la sélection d'un élément aléatoire dans un ensemble, il est souvent souhaitable de biaiser la sélection vers des éléments avec une association plus élevée poids. En Java, cela peut être réalisé à l'aide d'un NavigableMap, une structure de données spécialisée spécialement conçue à cet effet.

La classe RandomCollection, implémentée à l'aide d'un NavigableMap, permet d'ajouter des éléments pondérés et récupère des éléments aléatoires en fonction de leurs valeurs respectives. poids. Pour créer une RandomCollection, spécifiez simplement un générateur aléatoire (facultatif, ou utilisez le Random par défaut).

L'ajout d'éléments à la RandomCollection est simple. Chaque élément est associé à un poids, qui représente sa probabilité d'être sélectionné. Le poids total est maintenu au fur et à mesure que de nouveaux articles sont ajoutés.

Pour sélectionner un article aléatoire, un nombre aléatoire entre 0 et le poids total est généré. La méthode upperEntry() de NavigableMap est ensuite utilisée pour récupérer la première entrée avec un poids supérieur au nombre aléatoire. La valeur associée à cette entrée est l'élément sélectionné aléatoirement.

Exemple :

Ce code générera une séquence aléatoire d'animaux ("chien", "chat", "cheval" ) pondérés selon leurs probabilités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn