Ten facet
zadaje to samo pytanie. Mówi to samo co Frank, ale wagi nie wychodzą poprawnie, a w komentarzach ktoś sugeruje użycie ORDER BY -LOG(1.0 - RAND()) / Multiplier
, co w moich testach dało prawie doskonałe wyniki.
(Jeśli jacyś matematycy chcą wyjaśnić, dlaczego to jest poprawne, proszę, oświeć mnie! Ale to działa.)
Wadą byłoby to, że nie można ustawić wagi na 0, aby tymczasowo wyłączyć opcję, ponieważ skończyłoby się to dzieleniem przez zero. Ale zawsze możesz to odfiltrować za pomocą WHERE Multiplier > 0
.