Je moet het omdraaien:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
Op die manier sorteert het op snelheid, dan leuk en uiteindelijk willekeurig als tarief en leuk gelijk zijn.
Ook je originele ORDER BY met RAND() werkt niet omdat je twee ORDER BY-clausules gebruikt.