Es algo muy frecuente, cuando ya dominas todo eso de pedir y almacenar datos, ahora tu profesor te pedirá que tus programas generen números aleatorios para automatizar el proceso de llenar arreglos y todo eso.
Asà que lo primero que tenemos que hacer es incluir la librerÃa:
#include<stdlib.h>
Luego inicializar los números aleatorios incluyendo esto:
srand(time(NULL));
*Actualización: No se porqué con algunos IDE’s tira error con la función time. Solo hay que utilizar además la librerÃa time.h:
#include<time.h>
Luego guardar el número aleatorio en alguna parte:
num=rand();
Eso es básicamente. Para ajustar el rango de número aleatorios podemos hacer varias cosas.
Número aleatorios entre 0 y 50:
num=rand()%51;
Número aleatorios entre 1 y 100:
num=1+rand()%(101-1);
Número aleatorios entre 250 y 420:
num=250+rand()%(421-250);
De forma general es:
variable = limite_inferior + rand() % (limite_superior +1 - limite_inferior) ;
Asà que un programa que muestre 10 números aleatorios entre 1 y 10 quedarÃa asÃ:
#include<stdlib.h> #include<iostream> using namespace std; int main() { int num,c; srand(time(NULL)); for(c=1;c<=10;c++) { num=1+rand()%(11-1); cout<<num<<" "; } cin.get(); }
Hola… muy buen aporte.. solo me parece k he encontrado un pekeño error donde dice rango 1-100. creo k deberia ser
num=1+rand()%99;
segun la formula general propuesta
variable = limite_inferior + rand() % (limite_superior – limite_inferior)
ya que kedaria
variable = 1 + rand()% (100-1);
variable = 1 + rand()% 99;
Si tienes razón, pero ahà arriba dice que el rango es de 1 a 10 y el programa dice num=1+rand()%(10-1);
el programa si esta bien redactado, a lo ke me referia era a la explicacion abajito de : “Eso esa basicamente…etc etc etc etc”.. estas de acuerdo?
Ok!, ya entendà (4 meses después) jaja. Ahora lo corrijo. Gracias :D
Hey…..Buen aporte….la verdad es que estoy haciendo un juego de naipes y necesitaba esta leccion para poder barajar el deck sin que siempre sea de la misma forma…
Thanks
Órale, que interesante proyecto, que gusto que te ayudara el post :) ojalá nos cuentes como te fue.
Exito brother..!!
Bravichi!! muy bien explicado, pero si yo pusiera
num=1+rand%10
de todas formas me mostraria los numeros del 1 al 10
Tienes razón, de hecho de forma general serÃa
¡Gracias!
OK, y gracias por el pequeño articulo… para buen entendedor pocas palabras ;)
Hola muy bien explicado el tema, pero tengo una duda, si yo por ej quiero que el programa me devuelva numeros de 12 en 12 al azar, osea desde el 12 hasta el 72 (12*6).. pero no que abarque todos los numeros dentro de ellos sino que valla de 12 en 12, imaginate la primira salidada puede ser 12,24,36,48,60, o 72… se entiende?
Es muy fácil, sólo tienes que multiplicar por 12 el número que te resulte. Mira:
de hecho tienes que hacer un poqitin más que eso en la parte del num=(1+rand()%(6+1-1))*12;
lo tienes que cambiar por esto:
num=(6+rand()%(6+1-1)*12);
Hola! como puedo hacer estoo…no me resulta
Clasificar la serie de números dados según dos rangos: menores de 10 y mayores de 10 y
menores de 20.
Los números son: 1,2,3,6,12,24,48,96,192,384,768.
Generar diez números randomicos entre 0 y 50. Clasificar estos en los mismos rangos del
ejercicio anterior.
Ya hice el programa que necesitas, o más bien sólo la segunda parte que es la complicada. El post está programado para el 26 de noviembre- Si por alguna razón no puedes esperar me avisas.
okey grax! :D…aha no puedo esperar hasta esa fecha…lo puedes enviar antes??
ey estoy haciendo un examen de c++ y tengo que programar un menu que me de las opciones de sacar numeros aleatorios del 1 al 100 y calcular una matriz triangular superior
hola muy interesante el tema, pero me salio una duda si en el mencionado programa quisiera ingresar la cantidad de numeros al azar q salgan en impresion . como lo haria
Muy fácil, creas otra variable tipo int, la pides al usuario, luego en ciclo for pones el lÃmite de 1 a la variable introducida:
Lo hice al tanteo, pero creo que debe funcionar.
pues ya han checado que si efectivamente da numeros aleatorios pero esos son cada vez mayores, ie son diferentes y aleatorios pero como tu reloj incremento siempre el inicio es positivamente mayor chequen y veran
osea aplicar el random para un juego de dados por ejemplo, donde haya n lanzamientos, como seria “n” random ??
Pues… sÃ, asÃ.
Esta muy bien explicado, solo que ahora vienen dudas de como implementar cosas:
El programa que muestra 10 numeros al azar.
¿Como se podria hacer para guardar en una variable los 10 numeros que salen y que vuelva a hacer otra ves el random para hacer otros 10 numeros y que compare los numeros del primer random y los del segundo, y asi sucesivamente?
Suponiendo que se guarda en una variable seria asi:
Var1: 1 3 5 7 8
Var2: 3 5 7 1 8
Var3: 1 3 5 7 9
En var1 y var2 los numeros son iguales aunque no esten en orden; que la condicion fuera que si son iguales se regrese a hacer otro random y que compare y que si cambia como en var3 siga haciendo mas numeros al azar.
Espero que me ayuden con esto, desde ya gracias ;)
Tu lo que necesitas es saber cómo usar matrices, estoy planeando hacer una serie de posts sobre matrices pero pues en internet hay información de sobra.
Sip solo que no se bien como usarlas aun y con los numeros del azar, no soy muy bueno en esto; la cosa es que tengo que hacer un archivo .dat donde se guarden o se pongan los numeros al azar en lista y que cuando haga una combinacion al azar compare con las que ya estan en el archivo .dat y vaya omitiendo las que ya esten, esta algo complicado.
Buscare por internet lo de matrices y si no le entiendo muy bien seguire pendiente aqui; gracias por la ayuda y esta muy buena esta pagina! ;)
Que buen artÃculo !! justo lo que buscaba
saludos.
Gracias, saludos.
hola sabes busco informacion para mi esposo que esta estudiando le ayudo aveces y la explicacion es muy buena los felicito
fijenes q ami me sale un error q dice q no encuentra el archivo que
pueda ser tengo visual estudio 2010 express
yo tengo una duda aqui en esta funcion que rango es el que calcula
int i;
for(i=0;i<5;i++){
d1='A'+ rand()%('F'-'A');
d2='0'+ rand()%('F'-'A');
HOLA , MUCHAS GRACIAS POR EL APORTE, ME SIRVIO DE MUCHO….BUENA VOZ!!!
(Mauricio Bustamante – Peru)
grasias!!!!!!!!!
me ayudo mucho!!:d
+10;)
COMO PUEDO OBTENER LETRAS ALEATORIAS PERO SOLO LA A – C – G Y T
int adn[69][5];
srand(time(NULL));
int i,j;
for(i=0;i<=69;i++){
for(j=0;j<=5;j++){
adn[i][j]=97 + rand() % (101 – 97);
}
}
CON ESE CODIGO LA MATRIZ DE 69 X 5 SE LLENA CON LETRAS DE LA A A LA D ALEATORIAMENTE, PERO COMO PODRIA ASERLO SIN UN INTERVALO, YA QUE NECESITO QUE SEAN A C G Y T SOLO ESAS 4
SI ALGUIEN ME AYUDA ESTARIA MUY AGRADECIDO
LOS VALORES 97 Y 101 SE DAN POR EL CODIGO ASCII
es sencillo puedes ponerle un valor enumerado “enum” asignandole un numero a cada valor y despues trabajar con esos 4 numeros y despues sustituir segun te salga ese numero por la letra que tenia ese valor.
exelenteee :D soloo qee ami me salio con el puro rand :DDD
#include
using namespace std;
int main()
{
int i,j;
for(i=0,j=1;i+j<10;j=i++,j++)
{
if(i++==j++)
break;
cout<<i<<j<<endl;
}
cout<<i<<j<<endl;
system("PAUSE");
}
hola me llamo jose quisiera me explicaras ese punto de j=i++ no lo entiendo como sale por fa y este if(i++==j++) como sale no entiendo y porq gracias
BUENOOOOOOOOOOOO MUCHACHO!!! ME GUSTO Y ME SALVASTE… MI APORTE AQUI ESTA LA SIMULACION DE UN JUEGO DE DADOS… Espero este bien… xD
#include “stdafx.h”
#include “iostream”
#include “time.h”
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n, apuesta,jgo=0,jgp=0,je=0, d1,d2,dadosj,dadoso,saldo,g, ganancia,i=0;
cout<>n;
cout<>apuesta;
srand(time(NULL));
for (i=1; i<=n;i++){
cout<<"\tTURNO DE JUGADOR:\t";
d1=1+rand()%(6);
d2=1+rand()%(6);
dadosj=d1+d2;
cout<<dadosj<<" puntos";
system("pause");
cout<<"\tTURNO DE ORDENADOR:\t";
d1=1+rand()%(6);
d2=1+rand()%(6);
dadoso=d1+d2;
cout<<dadoso<<" puntos";
system("pause");
if (dadosj==dadoso){
cout<<"EMPATE"<dadoso){
cout<<"GANA PERSONA"<<endl;
jgp=jgp+1;
system("pause");
system("cls");}
if (dadosj<dadoso){
cout<<"GANA ORDENADOR"<<endl;
jgo=jgo+1;
system("pause");
system("cls");}
}
if(jgo==jgp){
cout<jgp){
cout<<"Resultado final GANA ORDENADOR";
saldo=jgo-jgp;
g=1;
}else{
cout<<"Resultado final GANA PERSONA";
saldo=jgp-jgo;
g=2;
}
}
cout<<"Jugadas totales ganadas por PERSONA: "<<jgp<<endl;
cout<<"Jugadas totales ganadas por ORDENADOR: "<<jgo<<endl;
cout<<"Jugadas totales EMPATADAS: "<<je<<endl;
ganancia=saldo*apuesta;
if (g==0){
cout<<"No ganan ni pierden"<<endl;
}else{
if (g==1){
cout<<"Ganancia de ordenador: S/."<<ganancia<<endl;
}else{
cout<<"Ganancia de Persona: S/."<<ganancia<<endl;
}
}
system("pause");
return 0;
}
hola necesito ayuda para escribir un programa enC++ para manejar el puerto paralelo( DB-25)en modo ECR usando una interfaz basica en la cual he usado los Ics 74ls573 como out y 74ls245 como int,D0 hasta D7 deben actuar como in/out , el programa debe detectar el estado de los swich puestos en la entrada de la interface y encender un led en la salida de la misma
Me hablas en chino jeje.
excelente aporte, pero quisiera saber como hago para presentar numeros negativos de forma aleatoria, he tratado de mil y un maneras pero no me resulta.
¿Números negativos? Supongo que necesitas números en un rango de -10 a 10 por ejemplo ¿no?
La fórmula del post es general y sirve para todos los casos, solo tienes que tener cuidado con los paréntesis:
num = -10 + rand()%(10 + 1 – (-10));
si, tengo q presentar en pantalla 100 numeros de forma aleatoria desde el -40 hasta el 40
Una ultima pregunta.. como hago para contar cuantos números son negativos?? gracias
haces un if y ves si el numero es menor a 0
if (num < 0){
numerosNegativos++;
}else{
numerosPositivos++
}
Exacto :)
Ok muchas gracias por su aporte, son lo maximo, ya lo logré..
disculpa quisiera saber como puedo hacer para que el me devuelva valores incluyendo el cero, es decir que el me devuelva valores entre 10 y 20 pero que a la vez sea posible que me salga el cero… como hago?
gracias por el aporte
Hola alguuien me puede decir como se puede implementar para ocupar tres direntes rangos en el mismo rand????
Hola, me gustarÃa saber como hago para que el número aleatorio que produzca el programa, sea siempre de 6 dÃgitos. Pero necesito que me genere números desde el 000000 hasta el 999999
#include
#include
using namespace std;
int main()
{
int num,c;
srand(time(NULL));
for(c=1;c<=10;c++)
{
num=1+rand()%(11-1);
cout<<num<<" ";
}
cin.get();
}
me aparese un error en srand(time(NULL));
olaaa! supiste resulverlo??
A mi tambien me aparece error en la misma parte :(
pon srand((unsigned)time(NULL));
hola…es muy bueno el aport
mm..me pueden ayudar… nesecito un programa en que 3 usuarios den 10 numeros y despues se den los numeros eleatrios y ver quien le atino a mas numeros…como e l melate…ok graxias!!!
ola, necesito un favor: necesito generanar numeros aleatorios, pero cuando se generen, guardarlos en un arreglo ya ordenados de menor a mayor, sin usar ningun metodo de ordenamiento ni nada. simplemente cuando se generen, que se generen ordenadamente. gracias
hola necesito crear un programa en c++ que simule una partida de cartas entre dos jugadores. A 10 bazas , se entregan 3 cartas y en cada baza se suelta una carta se compara y el que tenga la carta mayor puntua… es para examen:(
Hola quisiera saber como como serian los codigos para encontrar el valor maaximo y minimo de una serie de 10 numeros alatorios. gracias(para max y min crear modulos tipo procedimiento)
amigo como puedo hacer que en la serie de numeros aleatorios que se genera del 0 al 9, pueda tambien aparecer el 0?
M;e acabas de salvar la vida con esta ayuda q me diste, esta muy bien explicado el post, te luciste….!!!
Me acabas de salvar la vida con esta ayuda q me diste, esta muy bien explicado el post, te luciste….!!!
mmm me salen numero negativos y no lo quiero q hago
y para pedir que el usuario ingrese los datos como quedaria
saludoz!!!
quisiera saber como se pueden elevar los numeros que me da aleatorios al cubo y despues mostrarlos en pantalla???
:)
hola acabo de ver todo los comentarios. y me parecen interesantes.YO apenas estoy en c ,y la vdd casi no lo entiendo pero le dedico un poco de tiempo. pero saben tengo una duda..Bueno de hecho estoy haciendo un programa sobre la loteria nacional, que me indica el 1er y 2do y 3er lugar……pero en el rando solo mesale 5digitos cuando pongo esto…… num=rand()%1000000 como le hago para que me genere 6 numeros?
buen post…..ocupo una ayudita….debo realizar una matriz de 4 filas por 3 columnas con números múltiplos de 5 de forma automática y al final despliegue la matriz completa…………se podrÃa decir que ya realice todo, lo que no logro hacer es que me de los números automáticamente
Hola,necesito llenar un vector de tamaño “x”, con numeros aleatorios entre 0 y 1. El vector debe ser de tipo int, ojala usando STL, y sino pues no importa
HOLA ME PUEDEN DAR AYUDAR CON EL CODIGO PARA HACER QUE ME TOQUEN NUMEROS ALEATORIOS DE 1 A 100 CON RANGO DE EXITO DE 15%?
hola yo recién empiezo a programar y me gusta pero quiero q me den una mano como empiezo desde 0… espero su ayuda.. graxxx
Hola me pueden ayudar para simular la gestion de reservas y facturacion de 10 habitaciones, lo unico que se, es que hay que utilizar funciones para cada opcion(y creo que ficheros tb, esa es mi duda)