Título: [?] Me ayudan a entender el porque de este código? Publicado por: mastersuv en 9 Julio 2011, 06:08 am Creo que esta es la segunda vez que uso este foro para resolver una duda, y espero estarlo haciendo de la forma correcta... No tuve tiempo de leerme las reglas completamente, pero en fin jejej ya habrá otro momento...
Estoy programando en C++ y jugando un poco con números aleatorios (srand y rand) llegue a la duda de como limitar un rango para sacar dichos números aleatorios... y encontré lo siguiente: n = (rand()%(max-min+1))+min; Donde max, seria el numero máximo, y min el mínimo... mi duda es... porque así? No entiendo la lógica matemática ._. alguien me puede explicar? Título: Re: [?] Me ayudan a entender el porque de este código? Publicado por: Akai en 9 Julio 2011, 10:15 am rand() da un rango da un numero entre 0 y dios sabe qué. Si mal no recuerdo es un circuito del procesador dedicado específicamente a eso.
Entonces, cómo limitas el máximo número que te va a salir? operación módulo ( % ) En el caso que tu expones, se está sacando un número entre max y min de la siguiente forma: diff= max-min+1 aleatorio= rand() % diff --> es decir, el resto de dividir el resultado de rand entre diff. n= diff+min. de esta forma obtienes primero la diferencia entre max y min, generas un número entre esa diferencia, y luego le sumas min para que el resultado sea haber generado un número entre max y min. |