Hola @LecMHD
Si no te entendí mal, es lo siguiente:
- #include <stdio.h> 
- #include <stdlib.h> 
- #include <errno.h> 
-   
- #define RANDOM_DEV "/dev/random" 
-   
- char abc[] = "abcdefghijklmnopqrstuvwxyz"; 
-   
- int 
- get_random_number() 
- { 
-     FILE  *- stream  = fopen(- RANDOM_DEV , "rb");
-     if (!stream) { 
-         return -1; 
-     } 
-   
-     unsigned char buff[1]; 
-     fread(- buff , sizeof(- buff ), sizeof(unsigned char),-  stream );
 
-   
-   
-     return (int)(buff[0]); 
- } 
-   
- void 
- initialize_abc(char *array, int l) 
- { 
-     for (int i = 0; i < l; i++) 
-         array[i] = -1; 
- } 
-   
- char * 
- get_random_abc(char *array, int l) 
- { 
-     for (int i = 0; i < l; i++) { 
-         int rn = get_random_number(); 
-         if (rn == -1 && errno != 0) 
-             return NULL; 
-   
-         char c = array[i]; 
-         char new_c = abc[rn % (sizeof(abc)-1)]; 
-   
-         if (c == new_c) { 
-             i--; 
-             continue; 
-         } else { 
-             array[i] = new_c; 
-         } 
-     } 
-   
-     return array; 
- } 
-   
- int 
- main(void) 
- { 
-     char array[sizeof(abc)]; 
-   
-     initialize_abc(array, sizeof(array)); 
-     get_random_abc(array, sizeof(array)); 
-   
-     for (int i = 0; i < sizeof(array); i++) 
-   
-     return EXIT_SUCCESS; 
- } 
No es portable, pero creo que da la idea, igualmente lo de "pisar" significa que si la letra está en la posición del arreglo en particular, no es incluya, si no que se genere otra, o al menos, así lo entendí.
~ DtxdF