uso del rand

Brenda
25 de Julio del 2003
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

chuidiang
25 de Julio del 2003
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.