Maison  >  Article  >  développement back-end  >  Comment puis-je sélectionner une entrée aléatoire pondérée dans MySQL ?

Comment puis-je sélectionner une entrée aléatoire pondérée dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-23 13:49:10186parcourir

How Can I Select a Weighted Random Entry in MySQL?

MySQL : Sélection d'entrées aléatoires pondérées

Problème :

Votre table MySQL contient une colonne "Multiplicateur" qui attribue des poids aux entrées. La tâche consiste à sélectionner une entrée aléatoire en tenant compte de ces poids.

Solution :

Bien que RAND() puisse aider à sélectionner une entrée aléatoire, la pondération de la sélection nécessite une approche innovante approche. La réponse réside dans la modification de la configuration du tableau pour garantir une pondération équilibrée.

Selon les experts, une requête utilisant ORDER BY -LOG(1.0 - RAND()) / Multiplier permet d'obtenir efficacement la sélection pondérée. Bien que la justification mathématique derrière cette formule ne soit pas immédiatement apparente, il a été prouvé empiriquement qu'elle donne des résultats précis.

Cependant, cette approche se heurte à une limite. Attribuer un poids de 0 à une entrée pour la désactiver entraînerait une division par zéro. Pour contourner ce problème, vous pouvez utiliser une clause WHERE pour filtrer les entrées avec un multiplicateur supérieur à 0.

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