आपको इसे घुमा देना चाहिए:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
इस तरह यह दर के अनुसार क्रमबद्ध होता है, फिर पसंद और अंत में यादृच्छिक यदि दर और पसंद समान हैं।
साथ ही आपका मूल ORDER BY RAND() के साथ काम नहीं करता क्योंकि आप दो ORDER BY क्लॉज का उपयोग करते हैं।