Maison > base de données > tutoriel mysql > Comment sélectionner une ligne aléatoire pondérée dans MySQL ?

Comment sélectionner une ligne aléatoire pondérée dans MySQL ?

Barbara Streisand
Libérer: 2024-12-05 00:13:15
original
387 Les gens l'ont consulté

How to Select a Weighted Random Row in MySQL?

Sélection aléatoire avec résultats pondérés dans MySQL

Ce problème implique la sélection d'une entrée aléatoire dans une table MySQL où les lignes sont pondérées en fonction d'un " Colonne "Multiplicateur". Les approches conventionnelles utilisant RAND() ne tiennent pas compte de cette pondération.

Pour résoudre ce problème, un utilisateur a suggéré une approche impliquant ORDER BY -LOG(1.0 - RAND()) / Multiplier. Cette formule ajuste efficacement le processus de randomisation pour donner aux lignes pondérées une probabilité plus élevée d'être sélectionnées.

La formule calcule une valeur qui représente le « caractère aléatoire » pour chaque ligne, où une valeur inférieure indique une probabilité plus élevée. En divisant cette valeur par le « Multiplicateur », les lignes avec un multiplicateur plus élevé reçoivent effectivement un « caractère aléatoire » plus faible et donc une plus grande chance d'être choisies.

L'inconvénient de cette méthode est qu'il n'est pas possible de la désactiver. une ligne en réglant le multiplicateur à 0, car cela entraînerait une division par zéro. Cependant, cette limitation peut être surmontée en filtrant les lignes avec WHERE Multiplier > 0 pour exclure ceux avec un multiplicateur nul.

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