Números aleatorios de una lista

Javier
14 de Diciembre del 2005
He de crear un programa que aleatoriamente me devuelva números que se encuentren dentro de una lista (vector) que le pase. ¿Alguna idea?

kike
14 de Diciembre del 2005
Puedes usar srand() y rand()?

Si es asi una funcion como esta a la que le pasas el rango maximo del vector te genera un indice valido en base a los ticks del sistema

int funcion(int rangMax)//rangMax el indice maximo del vector
{
clock_t tic=clock();
srand(tic);
//obtener el numero generado con rand
int n=rand();
while(n>rangMax)
{
n/=10;
}
return n;
}

javier
14 de Diciembre del 2005
La lista debe ser de números no consecutivos, una lista de 7 números del 0 al 16000. Ya he conseguido algo usando un "case" ahora me encuentro con otro problema y es que genero la semilla con srand(time(NULL)), y cada vez que quiero generar un número se llama a la función con lo cual se genera una semilla, entonces el problema es que se me generan números aleatorios pero siempre de manera progresiva osea por ejemplo: 1045, 1049, 1054, 1059 .... ¿Puedo generar semillas de otra forma?

kike
14 de Diciembre del 2005
puedes usar otras semillas, las que tu quieres, pero ten en cuanta que lo que hace rand es generar un numero pseudoaleatorio en base a la semilla, si no me quivoco aplica una operacion matematica sobre esta, con lo cual si no varia la semilla, te dara siempre el mismo numero.
En cuanto a lo primero, la lista esta ordenada de 0 a 7 supongo, pues la funcion que te postee el otro dia, te genera un indice con el cual accedes al valor de la lista

javier
14 de Diciembre del 2005
Eso es lo que he hecho y por ahora funciona pseudo-correctamente. Gracias por tu ayuda kike.