elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con la función rand.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con la función rand.  (Leído 4,788 veces)
Felipe_Henriquez

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Ayuda con la función rand.
« 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!.


« Última modificación: 31 Octubre 2011, 19:01 pm por Felipe_Henriquez » En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Ayuda con la función rand.
« Respuesta #1 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
  1. (rand() % 10) + 1

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6. int numero_dado = (rand() % 6) + 1;
  7.  
  8. printf("%d", numero_dado);
  9.  
  10.  
  11. return 0;
  12. }


En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Felipe_Henriquez

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Ayuda con la función rand.
« Respuesta #2 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!.
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Ayuda con la función rand.
« Respuesta #3 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
  1. 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 Desconectado

Mensajes: 25


Ver Perfil
Re: Ayuda con la función rand.
« Respuesta #4 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!
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Ayuda con la función rand.
« Respuesta #5 en: 31 Octubre 2011, 20:20 pm »

Venga, mucha suerte ;D.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Funcion Rand() con strings en PHP
PHP
Riki_89D 5 9,937 Último mensaje 9 Marzo 2009, 14:37 pm
por cassiani
Duda sobre funcion rand()
Programación C/C++
Oblivi0n 4 3,047 Último mensaje 17 Junio 2010, 00:09 am
por cbug
Programa funcion rand()
Programación C/C++
hocius 4 3,164 Último mensaje 9 Octubre 2010, 22:30 pm
por hocius
Sobre la función rand()
PHP
#Aitor 8 3,166 Último mensaje 3 Enero 2015, 18:16 pm
por MinusFour
Función rand sin repeticiones
Programación C/C++
alejandro70 3 2,215 Último mensaje 29 Julio 2015, 09:37 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines