Maison >développement back-end >tutoriel php >Comment puis-je sélectionner une entrée aléatoire pondérée dans MySQL ?
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!