Urgente! Generar Números aleatorios en C++

Yoli
16 de Enero del 2005
Hola,

Necesito generar un número aleatorio entre el 1 y el 8, alguien me puede decir como se hace.

Gracias!!

chuidiang
16 de Enero del 2005
La funcion rand() te devuelve un numero aleatorio entre 0 y 2**32-1
Si haces el módulo 8, obtienes un numero entre 0 y 7

rand() % 8; /* Esto esta entre 0 y 7 */

Sumando uno a esto te queda entre 1 y 8

(rand () % 8) + 1; /* entre 1 y 8 */

Cada vez que ejecutes el programa posiblemente se te repita siempre la misma secuencia de numeros aleatorios. Para evitarlo, antes de llamar a rand() por primera vez debes darle una "semila aleatoria" por medio de la funcion srand()

srand (un_entero);

Una forma habitual de obtener este entero "aleatorio" es usar la funcion time() que te devuelve el número de segundos transcurridos desde el 1 de enero de 1970.

Resumiendo

srand (time(NULL));
int aleatorio = (drand() %8 ) + 1;

Estas funciones son linux, pero tienes el equivalente en visual c++ y yo creo que son exactamente iguales.

Se bueno.

Orlando
16 de Enero del 2005
...que si vas a generar varios caracteres en un segundo, hagas:
srand(time(0)/rand());
int indice = rand()%(NCAR+1)+1;

donde NCAR será el número de caracteres a generar. Así obligas a que srand inicialice el numero aleatorio cada vez... No sé, es lo q se me ocurre de pronto...

Espero q les sirva

Un saludo

soyyo22
16 de Enero del 2005
y para hacer que rand genere un número psudoaleatorio de coma flotante y precisión doble en el intervalo continuo [a,b] ?????

Orlando
16 de Enero del 2005
http://www.geocities.com/chuidiang/funciones/rand.html

Yoli
16 de Enero del 2005
Muchas gracias, encontré las equivalentes y me funciona perfectamente!

mercheisabel
16 de Enero del 2005
Hola,
Necesitamos generar un número aleatorio entre 5 y 20. Alguno de vosotros podría ayudarnos?
Gracias

mercheisabel
16 de Enero del 2005
Hemos leido vuestros mensajes de cómo generar números aleatorios entre 1 y 8 pero nos ha quedado dudas. En nuestro caso, que queremos un número entre 5 y 20, si hacemos

srand(time(NULL));
valor = (rand()%20) + 5;

si el resto fuera 19 al sumarle cinco se nos saldría del rango que queremos.

Necesitamos respuesta urgente, please.