Você deve dar a volta por cima:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
Dessa forma, ele classifica por taxa, depois gosta e, finalmente, aleatório se taxa e gosto são iguais.
Além disso, seu ORDER BY original com RAND() não funciona porque você usa duas cláusulas ORDER BY.