Ce type
pose la même question. Il dit la même chose que Frank, mais les pondérations ne sont pas correctes et dans les commentaires, quelqu'un suggère d'utiliser ORDER BY -LOG(1.0 - RAND()) / Multiplier
, qui lors de mes tests a donné des résultats quasiment parfaits.
(Si des mathématiciens veulent expliquer pourquoi c'est correct, s'il vous plaît éclairez-moi ! Mais ça marche.)
L'inconvénient serait que vous ne pourriez pas définir la pondération sur 0 pour désactiver temporairement une option, car vous finiriez par diviser par zéro. Mais vous pouvez toujours le filtrer avec un WHERE Multiplier > 0
.