Den här killen
ställer samma fråga. Han säger detsamma som Frank, men viktningarna kommer inte ut rätt och i kommentarerna föreslår någon att du använder ORDER BY -LOG(1.0 - RAND()) / Multiplier
, vilket i mina tester gav ganska perfekta resultat.
(Om någon matematiker där ute vill förklara varför detta är korrekt, vänligen upplys mig! Men det fungerar.)
Nackdelen skulle vara att du inte kunde ställa in viktningen till 0 för att tillfälligt inaktivera ett alternativ, eftersom du skulle sluta dividera med noll. Men du kan alltid filtrera bort det med en WHERE Multiplier > 0
.