La Web del Programador: Comunidad de Programadores
 
    Pregunta:  25916 - COMO GENERO NUMEROS ALEATORIOS , PERO QUE NO COMIENCEN EN 0?
Autor:  Leo Holc
Tengo que generar numeros aleatorios entre 5 y 2000
Yo se como mandar el maximo a la funcion rand( ) , pero no como mandar el numero de inicio.
Otra cosa, como se hace en caso de numeros FLOAT?

  Respuesta:  Luis Machuca
Eso es bastante sencillo cuando no estás usando floats, lo que hacemos es aprovechar el truco:

primero, entre 5 y 2000 hay 1995 números aleatorios, esto es el "rango". El cinco (5) es nuestro "inicio".
Entonces, la línea:

variable=inicio+random(rango);

genera números aleatorios entre inicio e inicio+rango, esto porque la instruccíon random(1995) genera números entre 0 y 1995, si les sumamos inicio (5) obtenemos números entre 5 y 2000, ambos inclusive.

Esta técnica sirve para crer números aleatorios en cualquier rango, por ejemplo entre 4 y 30 (26 aleatorios) la instrucción sería:

variable=4+random(26);

Para los floats imagino que hay que convertir inicio a una expresión entera y el resultado de variable a float otra vez, pero nunca lo he probado.

Espero ayudar.