Vous êtes sur la page 1sur 2

UNMSM-FIEE LENGUAJE DE PROGRAMACION

En C, para obtener números aleatorios, tenemos la función rand(). Esta función, cada vez que la
llamamos, nos devuelve un número entero aleatorio entre 0 y el RAND_MAX(un número enorme,
como de 2 mil millones). El primer problema que se nos presenta es que no solemos querer un
número aleatorio en ese rango, sería un dado muy curioso el que tenga tantas caras. Podemos
querer, por ejemplo, un número aleatorio entre 0 y 10. O de forma más general, entre 0 y N. La
cuenta que debemos echar para eso es esta:
#include <stdlib.h>
...
numero = rand() % 11;
numero = rand() % (N+1);
La operación módulo (%) nos da el resto de dividir rand() entre 11. Este resto puede ir de 0 a 10. De
la misma forma, el módulo de rand() entre N+1 va de 0 a N. ¿Y si queremos un rango que no
empiece en 0?. Por ejemplo, queremos un rango entre 20 y 30 (de forma más general,
entre M y N con N mayor que M). Pues es fácil, obtenemos un número entre 0 y 10 y le
sumamos 20 (un número entre 0 y N-M y le sumamos M)
numero = rand () % 11 + 20; // Este está entreo 20 y 30
numero = rand () % (N-M+1) + M; // Este está entre M y N
Ejemplo-1: Generación de números aleatorios:
#include <iostream>
#include <cstdlib> // para las funciones srand y rand
#include <ctime> // para las funciones de time
using namespace std;
int main() {
int aleatorio,dato; // arreglo de numeros;
int salir=0;
srand(time(0)); // inicializa el generador de aleatorios
aleatorio = rand() % 100;
cout << "Adivina que numero tengo" << endl;
while (salir==0)
{
cin >> dato;
if (dato == aleatorio){
salir = 1;
}
if (dato < aleatorio){
cout << "Es mayor" << endl;
}
if (dato > aleatorio){
cout << "Es menor" << endl;
}
}
cout << "Numero adivinado" << endl;
}

Ejemplo-2: ordenar de forma aleatoria un conjunto de números

LABORATORIO AGL
UNMSM-FIEE LENGUAJE DE PROGRAMACION

#include <iostream>
#include <cstdlib> // para las funciones srand y rand
#include <ctime> // para las funciones de time
using namespace std;

int main() {
int numeros[52]; // arreglo de numeros;
srand(time(0)); // inicializa el generador de aleatorios

for (int i=0; i<52; i++) {


numeros[i] = i; // llenar la matriz en orden
}

//--- Mezcla los elementos intercambiando


//--- aleatoriamente entre sí.
for (int i=0; i<(52-1); i++) {
int r = i + (rand() % (52-i));
int temp = numeros[i];
numeros[i] = numeros[r];
numeros[r] = temp;
}

//--- Imprime los 52 numeros mezclados


for (int c=0; c<52; c++) {
// Imprime numero uno por uno
cout << numeros[c] << " ";
}
cout << endl;

return 0;
}

● Compile y ejecute el programa para verificar el correcto funcionamiento.


● Explique cómo se realiza el ordenamiento de forma aleatoria sin que los números se repitan.
● Modifique el programa para entregar de forma aleatoria 4 grupos de datos (1 al 13), por
ejemplo:
o Grupo1: 5 8 3 2 13 1 10 4 9 11 1 6 12 7
o Grupo2: 12 3 9 10 …….
o Grupo3: 4 11 1 7 …….
o Grupo4: 1 6 4 12 …….

LABORATORIO AGL

Vous aimerez peut-être aussi