Dovresti girarlo:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
In questo modo ordina per tariffa, poi like e infine casuale se rate e like sono uguali.
Anche il tuo ORDER BY originale con RAND() non funziona perché usi due clausole ORDER BY.