Numeros aleatorios

cupin
25 de Agosto del 2005
Bueno necesito hacer por ejemplo un programa que me saque mil numeros aleatorios del 1 al 1000

Para ello hago el siguiente programa en C;

for (i=0;i<1000;i++){
srand(time(NULL));
x=(rand()%1000)+1;
printf("%d",x);
}

y el resultado es algo así:

651
651
651
651
652
652
652
653
653
....
....
.....hasta mil numeros

y es que en C la funcion rand para sacar el numero aleatorio se basa en el reloj, y por eso pasa esto.

¿Hay alguna manera de evitar esto y sacar numeros mas diferenciados?

Gracias

Julian Acosta
25 de Agosto del 2005
Mira, para un numero aleatorio, primero, generas un simple numero aleatorio, solo uno, de tres o mas cifras, el cual lo elavas al cuadrado, y el resultado, tomas la cadena de numeros, y los tres digitos centrales los elevas al cuadrado, y asi sucesivamente, hasta llegar a la cantidad deseada de numeros.
Asi generas numeros aleatorios a partir de una semilla desconocida. :)