मुझे लगता है कि सबसे आसान वास्तव में भारित जलाशय के नमूने का उपयोग करना है:
SELECT
id,
-LOG(RAND()) / weight AS priority
FROM
your_table
ORDER BY priority
LIMIT 1;
यह एक बढ़िया तरीका है जो आपको N तत्वों में से M चुनने देता है जहाँ प्रत्येक तत्व के लिए चुने जाने की संभावना उसके वजन के समानुपाती होती है। यह ठीक उसी तरह काम करता है जब आप केवल एक तत्व चाहते हैं। विधि यह लेख . ध्यान दें कि वे POW(RAND(), 1/weight) का सबसे बड़ा मान चुनते हैं, जो -LOG(RAND()) / weight के सबसे छोटे मानों को चुनने के बराबर है।