Anda harus membalikkannya:
SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();
Dengan begitu akan diurutkan berdasarkan rate, lalu like dan terakhir random jika rate dan like sama.
Juga ORDER BY asli Anda dengan RAND() tidak berfungsi karena Anda menggunakan dua klausa ORDER BY.