Título: Ayuda con la función rand. Publicado por: Felipe_Henriquez en 31 Octubre 2011, 18:59 pm Muy buenas, hace tiempo ya no creaba un nuevo tema....
He estado estudiando C y he llegado a funciones, pero la función rand de <stdlib.h> no logro comprenderla, cito el enunciado del libro de C que estudio.... La función rand genera un entero sin signo entre 0 y RAND_MAX suponiendo que RAND_MAX es 32767, hasta ahi todo bien se que rand(), genera un numero entre 0 y 32767 al azar... Cito nuevamente: El rango de valores que produce rand de manera directa, a menudo difiere del requerido por la aplicación. Por ejemplo, un programa que simula el lanzamiento de una moneda sólo requiere 0 para "cara" y 1 para "cruz". Un programa que simula el tiro de un dado de seis lados requiere enteros al azar entre 1 y 6. Para demostrar la función rand, desarrollemos un programa que simule 20 tiros de un dado de seis lados y que despliegue el valor de cada tiro. El prototipo de función para la función rand se puede encontrar en <stdlib.h> para producir números en rango de 1 a 5, utilizamos el operador módulo (%) junto con rand de la siguiente manera: rand() % 6. Hasta ahí quedo totalmente desorientado, no se supone que genera valores al azar entre 0 y rand max? para que sirve el módulo?.... Un ejemplo inocente de como trato de entenderlo si genera un valor de 0 entre RAND_MAX: supongamos generó 1000 y le saca el resto 6 generaria un 4 no?, la verdad no entiendo.... Desde ya gracias, si tuviera profesor de programación no preguntaría, les agradezco por haber leido y más a los que contestan un abrazo!. Título: Re: Ayuda con la función rand. Publicado por: Queta en 31 Octubre 2011, 19:32 pm Es lógico ya que, por ejemplo, dado el numero 10, si dividimos cualquier número real por éste, su resto/módulo siempre será 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9; por consiguiente:
Código El resultado de esta operación siempre será un número entre 1 y 10. El ejemplo mismo aplicado al dado, podría ser: Código
Título: Re: Ayuda con la función rand. Publicado por: Felipe_Henriquez en 31 Octubre 2011, 20:08 pm Gracias Queta por tu respuesta....
int numero_dado = (rand() % 6) + 1; Haber si lo entiendo: rand va a generar un numero aleatorio cualquiera cierto? supongamos saca el 2000 y le aplica el modulo de 6 o resto.... 6 * 333 = 1998 y su resto 2. Y ¿para que le sumamos el 1? eso daria 3.... no? el sumarle 1 que nos asegura? que si da resto 0 tengamos el numero de dado 1 no? y como resto 6 no puede dar bajo ningún motivo, llegamos a él sumando 1 a resto 5.... si es así creo que comprendí a la perfección muchas gracias de verdad por tu ayuda y espero su respuesta para corregir o para corroborar mi información muchas gracias abrazo!. Título: Re: Ayuda con la función rand. Publicado por: Queta en 31 Octubre 2011, 20:14 pm Exactamente, es para evitar que salga el 0. Siguiendo la lógica de rand + módulo se podría haber pensado el siguiente ejemplo para sacar el número de un dado:
Código Pero lo que pasaría es que obtendrías un número entre 0 y 6, luego si se sumara 1 quedaría entre 1 y 7, y el 7 no existe en un dado de 6 caras. Título: Re: Ayuda con la función rand. Publicado por: Felipe_Henriquez en 31 Octubre 2011, 20:19 pm Uh de verdad que te pasaste ;D Queta, no estudio formal ni nada soy un programador empirico, haber si el próximo año ya puedo formalizar estudios un gran abrazo!
Título: Re: Ayuda con la función rand. Publicado por: Queta en 31 Octubre 2011, 20:20 pm Venga, mucha suerte ;D.
|