Hola ronnieb.
El valor aleatorio es de un solo digito porque para hacer pruebas tardo menos en verificar si se repiten o no.
He eliminado el subsrt() y he dejado simplemente rand(0,9), para asegurarme de que $aleatorio es realmente numerico y no una cadena.
He probado ademas con mysql_num_rows() verificando asi si existe alguna fila.
Aunque no entiendo eso de $aleatorio - 0, puesto que creo que restar 0 no modifica ningun resultado, tambien lo he probado.
Nada funciona.