Una volta che l'ordinamento e' casuale... l'ordinamento e' casuale. Tu devi PRIMA estrarre i 20 record col valore piu' alto e poi mescolarli.

codice:
SELECT * FROM (
        SELECT c_art_articolo.*, c_art_categoria.*  
          FROM c_art_articolo
    INNER JOIN c_art_categoria
            ON c_art_articolo.id_art_categoria = c_art_categoria.id_art_categoria 
         WHERE c_art_articolo.data_ins_adm >= '$range' 
      ORDER BY c_art_articolo.contatore DESC
         LIMIT 20
) top20 ORDER BY RAND()
query scritta al volo non testata