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?
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.