uso del rand
Necesito por favor que me digan como hacer un programa que simule tirar una moneda y la misma compu diga si gfue sol o aguila y al mismo tiempo genere la tirada de undado y haga lo mismo
porfa es urgente!!!!
se los agradesco de antemano bye
porfa es urgente!!!!
se los agradesco de antemano bye
No se que rand() usas ni que devuelve. En unix es un entero entre 0 y un numero entero enorme que se llama RAND_MAX.
Para la moneda
if (rand() < RAND_MAX/2)
es sol
else
es aguila
Para el dado puedes hacer muchos ifs mirando si es menor que RAND_MAX/6.0, si es menor que RAND_MAX/6.0*2, si es menor que RAND_MAX/6.0*3, etc
Para no liarte con muchos ifs, lo mejor es convertir el numero entre 0 y RAND_MAX en un numero entre 1 y 6.
1+(int) (6.0*rand()/(RAND_MAX+1.0))
Esta cuenta hace lo siguiente:
rand()/(RAND_MAX+1.0) convierte el entero aleatorio en un numero entre 0.0 y 0.999...
Al multiplicarlo por 6.0, lo conviertes entre 0.0 y 5.999...
Al convertirlo a entero, lo conviertes entre 0 y 5.
Al sumarle 1, queda entre 1 y 6
Si el rand() que usas devuelve un valor entre 0.0 y 1.0, no necesitas dividir por RAND_MAX+1 ni nada parecido.
Se buena.
Para la moneda
if (rand() < RAND_MAX/2)
es sol
else
es aguila
Para el dado puedes hacer muchos ifs mirando si es menor que RAND_MAX/6.0, si es menor que RAND_MAX/6.0*2, si es menor que RAND_MAX/6.0*3, etc
Para no liarte con muchos ifs, lo mejor es convertir el numero entre 0 y RAND_MAX en un numero entre 1 y 6.
1+(int) (6.0*rand()/(RAND_MAX+1.0))
Esta cuenta hace lo siguiente:
rand()/(RAND_MAX+1.0) convierte el entero aleatorio en un numero entre 0.0 y 0.999...
Al multiplicarlo por 6.0, lo conviertes entre 0.0 y 5.999...
Al convertirlo a entero, lo conviertes entre 0 y 5.
Al sumarle 1, queda entre 1 y 6
Si el rand() que usas devuelve un valor entre 0.0 y 1.0, no necesitas dividir por RAND_MAX+1 ni nada parecido.
Se buena.
