Maison > interface Web > js tutoriel > Comment générer des nombres aléatoires pondérés : la distribution de probabilité cumulée est-elle la réponse ?

Comment générer des nombres aléatoires pondérés : la distribution de probabilité cumulée est-elle la réponse ?

Linda Hamilton
Libérer: 2024-11-11 04:09:03
original
969 Les gens l'ont consulté

How to Generate Weighted Random Numbers: Is Cumulative Probability Distribution the Answer?

Générer un nombre aléatoire pondéré : au-delà de l'échantillonnage par rejet

Dans le domaine des probabilités, la génération de nombres aléatoires pondérés constitue un outil essentiel pour simulations et modélisation statistique. Bien que l'échantillonnage par rejet constitue souvent une solution simple, il présente des limites en termes de performances et de consommation de mémoire.

Une alternative élégante émerge sous la forme d'une distribution de probabilité cumulative. Cette approche élimine le besoin d'une table de recherche préconstruite, ce qui entraîne d'importantes économies de mémoire et des performances en temps constant dans la sélection des valeurs. Voici comment cela fonctionne en JavaScript :

function weightedRand(spec) {
  var sum = 0;
  for (var i in spec) {
    sum += spec[i];
  }
  var r = Math.random() * sum;
  for (i in spec) {
    r -= spec[i];
    if (r <= 0) return i;
  }
}
Copier après la connexion

Les générateurs de nombres aléatoires pondérés trouvent souvent des applications dans des scénarios tels que :

  • Simulation d'événements probabilistes
  • Sélection d'éléments à partir d'un inventaire avec des probabilités variables
  • Générer des ensembles de données réalistes conformes à des distributions non uniformes

Dans des cas spécifiques, où les poids sont uniformément répartis, une approche encore plus simple s'avère efficace : choisissez simplement un index aléatoire dans un tableau représentant les valeurs possibles. Cependant, cette méthode ne permet pas de répartitions inégales des poids.

N'oubliez pas que le choix de la mise en œuvre dépend de facteurs tels que le nombre d'options, la répartition des poids et les caractéristiques de performance souhaitées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal