Urgente! Generar Números aleatorios en C++
Hola,
Necesito generar un número aleatorio entre el 1 y el 8, alguien me puede decir como se hace.
Gracias!!
Necesito generar un número aleatorio entre el 1 y el 8, alguien me puede decir como se hace.
Gracias!!
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.
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.
...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
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
y para hacer que rand genere un número psudoaleatorio de coma flotante y precisión doble en el intervalo continuo [a,b] ?????
Hola,
Necesitamos generar un número aleatorio entre 5 y 20. Alguno de vosotros podrÃa ayudarnos?
Gracias
Necesitamos generar un número aleatorio entre 5 y 20. Alguno de vosotros podrÃa ayudarnos?
Gracias
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.
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.
