la funcióon rand( ), devuelve un número aleatorio. Si la usas repetidas veces te darás cuenta que los números no son muy aleatorios. Para ello debes usar la función srand( ), la cual de acuerdo a la hora del equipo varía la generación de números por parte de rand( ). Si necesitas leer 76800 datos, entonces debes hacer rand( ) % 76800, así la función generará números aleatorios entre 0 y 76799, y nunca se saldrá de ese rango. Pero si es posible que se repita un valor aleatorio, entonces debieras llevar un registro de los valores que ya has solicitado, pienso que te pude servir algo como esto:
int quedanSinMarcar( int registro[ ], int MAX)
{
for ( int i = 0; i < MAX; i++)
if ( ! registro[ i ] ) // Si el valor esta en cero (sin marcar)
return 1;
return 0;
}
main( )
{
int registro[76800] = {0} // todos en cero (ninguno ha sido marcado)
int valor = 0;
srand( time (NULL) ); // Esta función genera número aleatorio c/vez
while ( ! quedanSinMarcar ( registro, 76800 ) ) { // hasta marcar todos
do {
valor = rand ( ) % 76800;
} while ( ! registro [ valor] ); // buscas el proximo a marcar
// aqui lees el dato que necesitas
// agregando tu codigo fuente
registro [ valor ] = 1; // Marcas, para saber que ya lo leiste
} // fin ciclo while
}