NÚMEROS ALEATORIOS
Semana 5
Ing. Pedro Castillo Domínguez
PREGUNTA
• ¿Cómo se realizar un programa que permita seleccionar un
estudiante de una lista de forma aleatoria.?
18/04/2023
LOGRO
• Al término de la sesión el estudiante estará en la capacidad de definir los números aleatorios demostrando
su destreza en la implementación de programas cumpliendo con los estándares de programación.
18/04/2023
INTRODUCCIÓN
• Los números aleatorios son un elemento clave en múltiples procesos de la
vida digital. Estos se utilizan no sólo en aplicaciones con gran componente
de aleatoriedad como puede ser el juego online, sino que también tienen
múltiples aplicaciones en el mundo de la ciberseguridad, para la
generación de claves, etc.
• Los números aleatorios son de gran utilidad en numerosas aplicaciones y
requieren un trato especial en cualquier lenguaje de programación. Las
funciones usuales de la biblioteca estándar en C++ son: rand, random y
randomize, estas funciones se encuentran en el archivo stdlib.h.
NÚMEROS ALEATORIOS - FUNCIONES
• 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 C++ este valor es 32767.
La función rand genera números a partir de
#include <iostream> un valor inicial o semilla. Si ejecutamos el
using namespace std;
int main() programa anterior varias veces seguidas
{ obtendremos siempre la misma secuencia de
int i;
cout << "20 números generados aleatoriamente:\n"; números. Para que esto no se produzca
for(i=1; i<=20; i++) debemos cambiar el valor inicial de la semilla
cout << rand() << endl;
system("pause"); cada vez que se ejecute el programa. Esto
} se hace con la función srand.
NÚMEROS ALEATORIOS - FUNCIONES
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.
EJEMPLO
#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");
}
RANGOS PARA NÚMEROS ALEATORIOS
#include <iostream>
#include <ctime>
• Para generar números aleatorios entre dos límites DESDE
using namespace std;
– HASTA utilizaremos la siguiente expresión:
int main()
{
srand(time(NULL));
numero = aleatorio = rand()%(HASTA-DESDE+1)+DESDE; int i, n, aleatorio, DESDE=4, HASTA=10;
cout << "Números aleatorios " << DESDE << " y " << HASTA << endl;
Para ajustar el rango de número aleatorios podemos cout << "Cuantos números aleatorios quiere generar? ";
hacer varias cosas. cin >> n;
for (i = 1; i <= n; i ++)
{
- Número aleatorios entre 0 y 50: aleatorio = rand()%(HASTA-DESDE+1)+DESDE;
num=rand()%51; cout << aleatorio << " ";
- Número aleatorios entre 1 y 100: }
num=1+rand()%(101-1); cout << endl;
- Número aleatorios entre 250 y 420: system("pause");
}
num=250+rand()%(421-250);
EJEMPLO
Recordando:
num=rand()%10+1;
Donde "rand" es la función para generar un numero aleatorio,
%10 indica cual es el rango de números a generar ( en este caso del 0 al 9 )
+1 indica que inicia en el 1(en este caso generaría número del 1 al 10 #include <cstdlib>
#include <iostream>
using namespace std;
int main()
Programa que genera un numero Random para simular un
{
dado (6 caras)
srand((unsigned)time(NULL));
int num, n;
cout<<"Escoge numero"<<endl;
cin>> num;
n=rand()%6+1;
cout<<"El numero es "<<n<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
SIMULACIÓN
• La Simulación es una herramienta de análisis que nos permite sacar conclusiones sin necesidad de trabajar
directamente con el sistema real que se está simulando. La Simulación es especialmente útil cuando no
disponemos de dicho sistema real o nos resulta demasiado arriesgado realizar experimentos sobre el.
OPERADORES LÓGICOS
• Los operadores lógicos producen un resultado booleano, y sus operandos son también valores lógicos o
asimilables a ellos (los valores numéricos son asimilados a cierto o falso según su valor sea cero o distinto de
cero). Por el contrario, las operaciones entre bits producen valores arbitrarios.
• Los operadores lógicos son tres, dos de ellos son binarios y el último (negación) es unario: