Powinieneś to odwrócić:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
W ten sposób sortuje według szybkości, następnie polubień iw końcu losowo, jeśli szybkość i polubienie są równe.
Również twoje oryginalne ORDER BY z RAND() nie działa, ponieważ używasz dwóch klauzul ORDER BY.