Autor
|
Tema: Ayuda con la función rand. (Leído 5,033 veces)
|
Felipe_Henriquez
Desconectado
Mensajes: 25
|
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!.
|
|
« Última modificación: 31 Octubre 2011, 19:01 pm por Felipe_Henriquez »
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
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:
El resultado de esta operación siempre será un número entre 1 y 10. El ejemplo mismo aplicado al dado, podría ser: #include <stdio.h> #include <stdlib.h> int main(void) { int numero_dado = (rand() % 6) + 1; return 0; }
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
Felipe_Henriquez
Desconectado
Mensajes: 25
|
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!.
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
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: int numero_dado = rand() % 7;
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.
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
Felipe_Henriquez
Desconectado
Mensajes: 25
|
Uh de verdad que te pasaste Queta, no estudio formal ni nada soy un programador empirico, haber si el próximo año ya puedo formalizar estudios un gran abrazo!
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
Venga, mucha suerte .
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Funcion Rand() con strings en PHP
PHP
|
Riki_89D
|
5
|
10,129
|
9 Marzo 2009, 14:37 pm
por cassiani
|
|
|
Duda sobre funcion rand()
Programación C/C++
|
Oblivi0n
|
4
|
3,280
|
17 Junio 2010, 00:09 am
por cbug
|
|
|
Programa funcion rand()
Programación C/C++
|
hocius
|
4
|
3,426
|
9 Octubre 2010, 22:30 pm
por hocius
|
|
|
Sobre la función rand()
PHP
|
#Aitor
|
8
|
3,421
|
3 Enero 2015, 18:16 pm
por MinusFour
|
|
|
Función rand sin repeticiones
Programación C/C++
|
alejandro70
|
3
|
2,449
|
29 Julio 2015, 09:37 am
por do-while
|
|