Měli byste to otočit:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
Tímto způsobem se třídí podle sazby, pak podle hodnocení a nakonec náhodně, pokud jsou sazba a hodnocení stejné.
Také vaše původní ORDER BY s RAND() nefunguje, protože používáte dvě klauzule ORDER BY.