Generar Números Aleatorios en C++

Para generar números aleatorios en C++ se utilizan las funciones rand y srand.
Función rand()
int rand(void);
La función rand calcula un número aleatorio en el intervalo entre 0 y RAND_MAX. El valor de RAND_MAX es una constante predefinida que representa el mayor valor que puede devolver la función rand. En Dev-C++ este valor es 32767.
Ejemplo: Programa C++ que genera 20 números aleatorios.
#include <iostream>
using namespace std;
int main()
{
   int i;
   cout << "20 numeros generados aleatoriamente:\n";
   for(i=1; i<=20; i++)
           cout << rand() << endl;
   system("pause");
}
La función rand genera números a partir de un valor inicial o semilla. Si ejecutamos el programa anterior varias veces seguidas obtendremos siempre la misma secuencia de números. Para que esto no se produzca debemos cambiar el valor inicial de la semilla cada vez que se ejecute el programa. Esto se hace con la función srand.
Función srand()
void srand(unsigned int semilla);
La función srand fija el punto de comienzo para generar números aleatorios. El generador de números aleatorios obtiene los números en función del valor de su argumento. Cuando esta función no se utiliza, el valor del primer número generado siempre es el mismo para cada ejecución (corresponde a un argumento de valor 1).
Para obtener números aleatorios mediante estas funciones, es recomendable utilizar como semilla un valor que cambie constantemente, como por ejemplo, el valor devuelto por la función time (librería ctime). Esta función devuelve el número de segundos transcurridos desde las 0 horas del 1 de Enero de 1970.
Podemos comprobar el funcionamiento modificando el ejemplo anterior para que genere números diferentes en cada ejecución:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
   srand(time(NULL));
   int i;
   cout << "20 numeros generados aleatoriamente:\n";
   for(i=1; i<=20; i++)
          cout << rand() << endl;
   system("pause");
}
Para generar números aleatorios entre dos límites DESDE – HASTA utilizaremos la siguiente expresión:
numero = aleatorio = rand()%(HASTA-DESDE+1)+DESDE;
Ejemplo: Programa C++ que genera números aleatorios entre 4 y 10. La cantidad de números a generar se pide por teclado
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
   srand(time(NULL));
   int i, n, aleatorio, DESDE=4, HASTA=10;
   cout << "Numeros aleatorios entre " << DESDE << " y " << HASTA << endl;
   cout << "Cuantos numeros aleatorios quiere generar? ";
   cin >> n;
   for (i = 1; i <= n; i ++)
   {
             aleatorio = rand()%(HASTA-DESDE+1)+DESDE;
             cout << aleatorio << " ";
   }
   cout << endl;
   system("pause");
}

2 comentarios:

  1. Por si resulta de su interés o el de alguno de sus lectores, le dejo el enlace a un generador de números aleatorios:
    http://informatica-pfont.blogspot.com/2011/07/numeros-aleatorios.html

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar