Orang ini
menanyakan pertanyaan yang sama. Dia mengatakan hal yang sama seperti Frank, tetapi bobotnya tidak benar dan dalam komentar seseorang menyarankan menggunakan ORDER BY -LOG(1.0 - RAND()) / Multiplier
, yang dalam pengujian saya memberikan hasil yang cukup sempurna.
(Jika ada matematikawan di luar sana yang ingin menjelaskan mengapa ini benar, mohon pencerahannya! Tapi ini berhasil.)
Kerugiannya adalah Anda tidak dapat mengatur pembobotan ke 0 untuk menonaktifkan opsi sementara, karena Anda akan membaginya dengan nol. Tetapi Anda selalu dapat memfilternya dengan WHERE Multiplier > 0
.