Foros del Web » Programación para mayores de 30 ;) » C/C++ »

funcion rand() en c

Estas en el tema de funcion rand() en c en el foro de C/C++ en Foros del Web. hola a todos gracias por su tiempo seré lo mas breve y concisa posible, pues tengo una duda acerca de esta función de números aleatorios ...
  #1 (permalink)  
Antiguo 01/03/2012, 05:12
Avatar de aleingenieria  
Fecha de Ingreso: septiembre-2011
Ubicación: guatemala
Mensajes: 7
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta funcion rand() en c

hola a todos gracias por su tiempo seré lo mas breve y concisa posible, pues tengo una duda acerca de esta función de números aleatorios en C
hice un juego de dados pero mi dificultad radica en que el rango debería de ser entre 1 a 6 pero la función rand()%7 utiliza un rango entre 0 a 6....


investigando acerca de la funcion encontre esto:



"Si Ud. quiere generar un entero aleatorio entre 1 y 10, siempre (ambos incluidos)

debería hacerlo usando los bits de orden alto como en:"


j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

En mi programa quedaria asi:

dado1=1+(int) (6.0*rand()/(RAND_MAX+1.0)) ;

Pero la verdad es que no entiendo la formula que utilizaron en ese código y de nada me sirve utilizarla sino se como es que funciona....


Si alguien me hiciera el favor de decirme porque esa formula si me despliega los numeros de 1 a 6, se lo agradeceria mucho




  #2 (permalink)  
Antiguo 01/03/2012, 06:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: funcion rand() en c

rand() % 6; te da numeros entre 0 y 5

Si ahora lesumamos uno

rand()%6 + 1 ;

Obtenemos numero entre 1 y 6.....

Un poco de explicacion el operador "%" es el modulo. Devuelve el resto de la division. Cualquier numero al ser dividido por 6 el resto si o si va a quedar entre 0(si es execta) y 5. Despues de esto simplemente sumamos uno para obtener el rango deseado.
  #3 (permalink)  
Antiguo 01/03/2012, 13:50
Avatar de aleingenieria  
Fecha de Ingreso: septiembre-2011
Ubicación: guatemala
Mensajes: 7
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: funcion rand() en c

Cita:
Iniciado por sam90 Ver Mensaje
rand() % 6; te da numeros entre 0 y 5

Si ahora lesumamos uno

rand()%6 + 1 ;

Obtenemos numero entre 1 y 6.....

Un poco de explicacion el operador "%" es el modulo. Devuelve el resto de la division. Cualquier numero al ser dividido por 6 el resto si o si va a quedar entre 0(si es execta) y 5. Despues de esto simplemente sumamos uno para obtener el rango deseado.
oh amigo me has ayudado demasiado, MUCHAS MUCHAS GRACIAS por tu pronta respuesta me quedo bastante claro

Etiquetas: numeros, prograc++, rand, aleatoria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.