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");
}
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:
ResponderEliminarhttp://informatica-pfont.blogspot.com/2011/07/numeros-aleatorios.html
Este comentario ha sido eliminado por el autor.
ResponderEliminarGracias! , una pregunta: ¿ para que esta instrucciòn "system("pause");" ? Gracias si por favor me la resuelven
ResponderEliminarpara que el programa se pause hasta que presionen una tecla
Eliminarcomo seria el programa implementandole un clase alguien que me ayude muchas gracias
ResponderEliminarnada más fija el método a una clase y cuando crea una instancia lo llama instancia.tiempo(parametros)
ResponderEliminarmuy bueno mi profesor me dijo que soy un capo cual mafioso de la web
ResponderEliminarMe marca error en el NULL, es un define ??
ResponderEliminarAgrega esta librería al inicio:
Eliminar#include
Por si les sale error agregar al inicio:
ResponderEliminar#include
#include
EliminarComo puedo definir un rango para la creación del número aleatorio? quiero que sea un número del 0 al 9
ResponderEliminarrand()%9+1;
EliminarAsí te dará solo números dentro de ese parámetro
Y si necesito numeros tanto positivos y negativos? como se escribe el parametro
EliminarYo personalmente necesitaba de -3 a +6 y puse '= rand()% 10 -3; ' consegui eso a prueba y error, no entiendo bien el razonamiento
EliminarSolicite al usuario capturar una cadena, de máximo 30 caracteres, Posterior a ello imprimir la siguiente información: Cantidad de letras, Cantidad de dígitos numéricos, Cantidad de otros caracteres, longitud de la cadena, mostrar la cadena en letras mayúsculas. Al final pregunte al usuario si desea realizar nuevamente la captura.
ResponderEliminarMe pueden ayudar