Está en la página 1de 3

Graficación Javier Sánchez Padilla.

_________________________________________________________________________________________

GENERAR NÚMEROS ALEATORIOS.

¿Qué es un número aleatorio?

Un número aleatorio es aquel obtenido al azar, es decir, que todo número tenga la misma
probabilidad de ser elegido y que la elección de uno no dependa de la elección del otro. El
ejemplo clásico más utilizado para generarlos es el lanzamiento repetitivo de una moneda o
un dado.
¿Cómo podemos generar un programa que genere números aleatorios?
Mediante el uso de la función rand(), ejemplo:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])


{ int x;
cout<<"Vamos a generar veinte numeros aleatorios"<<endl;
for( x=0; x<20; x++ )
cout<<rand()<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

RESULTADO:

En este ejemplo cada vez que ejecutemos el programa nos generará los mismos valores
aleatorios, podemos estar ejecutando una y otra vez y los valores serán siempre los
mismos, esto para resolver esto usaremos la función srand(), la cual nos permitirá introducir
un nuevo valor inicial de referencia (semilla) para generar valores aleatorios diferentes.

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, char *argv[])


{ int x;

srand(time(NULL)); //Permite crear una nueva semilla para los valores


aleatorios
cout<<"Vamos a generar veinte numeros aleatorios"<<endl;
for( x=0; x<20; x++ )
cout<<rand()<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Pág. 1
Graficación Javier Sánchez Padilla.
_________________________________________________________________________________________

Esta vez el resultado de las ejecuciones del programa nos dará como resultado diferentes
números aleatorios.

Con esto hemos mejorado totalmente nuestro programa que permite generar números
aleatorios, pero ahora bien, ¿cómo podemos controlar si queremos que los números solo
sean entre un rango específico?, por ejemplo que sean valores entre 0 y 12 o valores entre
0 y 196? Para poder hacer esto debemos considerar lo siguiente, vamos a analizar cómo se
lleva a cabo una división, sabemos que al dividir un número el residuo siempre será menor
al divisor, ejemplo.

56/3= 18 y sobran 2 79/7=11 y sobran 2 573/5=314 y sobran 3

Tomemos como referencia el valor 7, todos los valores divididos entre 7 siempre tendrán
como residuo un valor entre 0 y 6 pero jamás el mismo 7.

1/7 = 0 y sobra 1 9/7 = 1 y sobran 2 17/7 = 2 y sobran 3


2/7 = 0 y sobran 2 10/7 = 1 y sobran 3 18/7 = 2 y sobran 4
3/7 = 0 y sobran 3 11/7 = 1 y sobran 4 19/7 = 2 y sobran 5
4/7 = 0 y sobran 4 12/7 = 1 y sobran 5 20/7 = 2 y sobran 6
5/7 = 0 y sobran 5 13/7 = 1 y sobran 6 21/7 = 3 y sobran 0
6/7 = 0 y sobran 6 14/7 = 2 y sobran 0 22/7 = 3 y sobran 1
7/7 = 1 y sobran 0 15/7 = 2 y sobran 1 23/7 = 3 y sobran 2
8/7 = 1 y sobran 1 16/7 = 2 y sobran 2 24/7 = 3 y sobran 3

Podemos observar que el patrón se repite para el valor 7 de 0 a 6 una y otra vez, entonces vamos a
crear un programa que permite asumir este comportamiento de la siguiente forma: usaremos la función
rand() para generar los números aleatorios, la función srand() para generar una nueva semilla para
nuevos números aleatorios y finalmente el operador módulo (%) para obtener solamente el residuo.

En el ejemplo vimos que el residuo (la cantidad que sobra) jamás será igual al divisor, siempre será
menor desde cero hasta el divisor -1, por lo tanto si la función rand() genera un número hasta 35675, al

Pág. 2
Graficación Javier Sánchez Padilla.
_________________________________________________________________________________________
dividir entre cualquier número si extraemos el residuo obtendremos un número aleatorio desde cero
hasta el número en el cual dividimos menos uno.
Dicho en otras palabras para generar un número aleatorio entre 0 y 7 diríamos rand( ) % 8, si queremos
generar números aleatorios entre 0 y 11 sería rand () % 12, si queremos números aleatorios entre 0 y
100 sería rand ( ) % 101.

#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main(int argc, char *argv[])


{ int x, aleatorio;
srand(time(NULL)); //Permite crear una nueva semilla para los valores aleatorios
cout<<"Generar aleatorios desde cero hasta que numero menos uno ";
cin>>aleatorio;
cout<<"Vamos a generar veinte numeros aleatorios"<<endl;
for( x=0; x<20; x++ )
cout<<"Numero Aleatorio "<<x<<" ="<<rand()%aleatorio<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Resultado

Pág. 3

También podría gustarte