Nombres aléatoires pondérés : une solution Boost-ful
Dans la quête de la génération de nombres aléatoires pondérés, Boost cache un trésor de possibilités qui peut atténuer la lutte. Plongeons au cœur du problème et découvrons comment Boost peut vous responsabiliser.
Dévoilement de l'algorithme
Au cœur se trouve un algorithme simple qui exploite la puissance des poids. :
Traduire en code Boost
Avec Boost dans votre arsenal, traduire cet algorithme devient un jeu d'enfant :
int sum_of_weight = 0; for (int i = 0; i < num_choices; i++) { sum_of_weight += choice_weight[i]; } int rnd = random(sum_of_weight); for (int i = 0; i < num_choices; i++) { if (rnd < choice_weight[i]) return i; rnd -= choice_weight[i]; } assert(!"should never get here");
Optimisation pour la vitesse
Pour les scénarios dans lesquels les poids restent statiques et où des sélections aléatoires fréquentes se produisent, une technique d'optimisation brille :
Gérer l'inconnu
Dans les cas où le nombre d'articles reste inconnu, l'échantillonnage de réservoir offre un algorithme de sélection pondéré robuste.
Exploitez le pouvoir de Boost et plongez dans le domaine des nombres aléatoires pondérés. Les connaissances que vous acquerrez aujourd'hui vous guideront vers un chemin de hasard supérieur dans vos aventures de codage.
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!