Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > Numeros Aleatorio please
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Numeros Aleatorio please
Enviado por _malcom_ el día 29 de enero de 2005

Hola amig@s,

Me gustaria que alguien me dijiera como puedo generar numeros aleatorios... pero no numeros aleatorios cualesquieran sino con una restriccion, allá va...

Necesito que sean del 00 al 36, ambos incluidos, y como veis son de dos cifras, es decir... [ 00, 01,02....14...36 ]

Muchas gracias, espero respuestas ^_^

Saludos a tod@s

 
Re: Numeros Aleatorio please
Enviado por noel solw el día 29 de enero de 2005

si no me equivoco random(37) va a originarte numeros randomales entre 0 y 36

 
Re: Re: Numeros Aleatorio please
Enviado por _malcom_ el día 29 de enero de 2005

No me funciona q libreria uso? <math.h> ?¿

He probado estas 3, y nada me da un error de

[Linker error] undefined reference to `random'

el codigo es este:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main ()
{
int i, num;

while (i<=50)
{
num=random(37);
i++;
printf("%d",num);
}
}

Cual es el fallo?

Gracias ^_^

 
Re: Re: Re: Numeros Aleatorio please
Enviado por David el día 20 de abril de 2008

Tienes que linkar con -lm

 

Re: Re: Re: Numeros Aleatorio please
Enviado por goñi el día 14 de febrero de 2005

Prueba esto.
numero=1+rand()%(rango_maximo-rango_minimo+1);

 
Re: Re: Re: Re: Numeros Aleatorio please
Enviado por Casidiablo el día 29 de marzo de 2005

Esta formula no sirve completamente, ya que repite la misma secuencia de numeros aleatorios cada vez que se ejecuta. ¿Como hago para que cambie cada vez que ejecuto el programa sin tener que cambiar el codigo cada vez que lo ejecuto?

 


Re: Re: Re: Numeros Aleatorio please
Enviado por ef el día 31 de mayo de 2006

prueba con: num=rand() % 37

 


Re: Re: Numeros Aleatorio please
Enviado por saint el día 8 de julio de 2008

amigo, tienes que generar la semilla, srand(time(NULL)) despues, o si quieres antes, de declarar las variables... saludos

 


Re: Numeros Aleatorio please
Enviado por _malcom_ el día 29 de enero de 2005

He probado con las librerias <math.h>, <time.h> y las anteriores, me sigue saliendo el mismo error, quizas sea del compilador?? utilizo el DEV C++ no se que hacer.... el codigo esta bien?

Saludos

 
mira...!!!
Enviado por arkahe el día 30 de enero de 2005

yo utilizoel visual c++. y para generar numeros aleatorios utilizo la cabecera stdlib.h , despuesgenero una semilla ,la cual toma el tiempo en milisegundos, entiendes mira es algo asi....


#include «stdlib.h»
#include «time.h»
#include «iostream.h»

void main (void)
{int num;
srand(time(NULL)); // aki generamos la semilla.....

num=rand()%10; // esto me genera numeros del 0 al 9

/* ahora si tu kieres generar el 00, el 01, el 02, tienes ke hacer algo asi*/


if(num«10)
{
/* aki tu puedes hacer ke lo imprima un cero adelante y luedo el numero generado aletoriamente:*/

cout««"0"««num;
/* o si no lo kieres hacer asi de alguna forma tines ke almacenarlo en un char para ke te reconozca el 0 antes del numero pes ok..... bye
}
}

si kires ke te esxpike mas agregame y te puedo ayudar arkahe@hotmail.com

 
Re: mira...!!!
Enviado por noel solw el día 30 de enero de 2005

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

int main()
{
randomize();
for(int i = 0;i < 200;i++)
cout << setw(10) << random(37);
cout << endl;
return 0;
}

 

Re: mira...!!!
Enviado por _malcom_ el día 31 de enero de 2005

No funciona como quiero arkahe, se como generar el 0 delante de los numeros q no tienen 2 digitos, el problema es que no encuentro la funcion que genere numeros aleatorios (q se puedan repetir) del 0 al 36

Lo de la semilla que pusiste, la utilizas para que coja los segundos del reloj para generar los numeros, es así? o me equivoco? la cosa es q si ejectutas el programa varias veces seguidas te salen los mismos numeros... vuelvo a repetir q no me importa que se repitan pero no 3 ni 4 veces seguidas jejjeje no es muy logico...

A ver si hay alguna otra forma que sepáis....

Gracias ^_^

 
Re: Re: mira...!!!
Enviado por Linko el día 1 de febrero de 2005

Cada vez que se ejecuta la funcion randomize() se reinicia el generador de numeros aleatorios tomando como referencia la hora del sistema con una precision de milesimas de segundo, si se ejecuta esa funcion mas de una vez en un tiempo menor a una milesima se obtiene el mismo numero de comienzo y quizas es eso lo que te esta sucediendo.

Deberias poner dicha funcion al principio del programa de manera que solo se la llame una vez, o donde desees reiniciar la secuencia de numeros, o incluso no ponerla si deseas que se repita la misma secuencia cada vez que inicies el programa.

un saludo a todos, soy nuevo, voy a echar un vistazo a la pagina, quizas me quedo

 


Re: mira...!!!
Enviado por wakeup el día 26 de abril de 2006

a mi time(NULL) me da el tiempo en segundos no en milisegundos ¿?¿?

______________
http://www.hhdirecto.net

 



Re: Numeros Aleatorio please
Enviado por _malcom_ el día 1 de febrero de 2005

Ya suponia que pasaba algo así... pero como puedo solucionarlo? yo quiero generar tantos numeros aleatorios como el usario diga y luego escribirlos en un fichero de texto.

En teoria si el usuario dice una cantidad de 20, se generan 20 numeros, pero a q velocidad?? las maquinas son muy rapidas jejjeje no quiero que salgan los mismos numeros, no seria realista, nose si me explico? hay alguna forma para relentizar un poco los numeros? nose alguna solucion please!????

Numeros del 0 al 36, gracias ^_^

 
Re: Re: Numeros Aleatorio please
Enviado por Linko el día 1 de febrero de 2005

La funcion randomize() reinicia la secuencia de numerosa basandose en la hora del sistema usando la hora, minutos, y segundos (sin las milesimas como dije anteriormente) por lo tanto utilizar esa funcion en un tiempo menor a un segundo no tiene sentido porque se reiniciara en el mismo valor de comienzo. Cuando se obtienen sucesivamente valores con rand() estos forzosamente tienen que ser diferentes cada vez, porque se obtiene con un calculo matematico a partir del anterior numero generado.

asegurate de que randomize() solo se ejecuta una vez al comienzo del programa, y luego haz llamadas sucesivas a randon(37) para obtener un valor diferente cada vez, debe funcionar.

 


Re: Numeros Aleatorio please
Enviado por _malcom_ el día 1 de febrero de 2005

Gggrrr comienzo a desesperarme!! el codigo es este

#include "stdlib.h"
#include "time.h"
#include "iostream.h"

int main ()
{
int num,x;

randomize();
srand(time(NULL));

while(x<=6)
{
num=randon(37);
//num=rand()%37;
printf("%d",num);
}
}

Pero me salta con el mensaje de error
iostream.h: No such file or directory.

Juerrrrr me cago en to, no me digas q no tengo esa libreria??? alguien me la puede pasar?

Gracias ^_#

 
Re: Re: Numeros Aleatorio please
Enviado por Alejandro_ el día 2 de febrero de 2005

Bueno, ya casi lo tienes...

Si se trata del lenguaje C:
las funciones "random" y "randomize" no están en la biblioteca estándar, son funciones adicionales que ofrecían algunos compiladores.

De acuerdo con el mensaje de error:
"iostream.h: No such file or directory"
se trata de un compiladro de C++, así que hay que considerar que estás tratando de compilar código viejo con un compilador nuevo:
Desde hace algo más de diez años que las bibliotecas
stdlib.h , time.h y iostream.h ya no forman parte del C++; en su lugar, y sólo porque se trata de continuar la compatibilidad con el lenguaje C, las bibliotecas son:
<cstdlib>, <ctime> e <iostream>

Acá abajo pongo tu código corregido:


#include <cstdlib>
#include <iostream>

int main ()
{
int num,x=0;

srand(time(NULL));

while(x<=6)
{
num=rand()%37;
printf("%d",num);
printf("\n");
x++;
}

system("pause");

}

//Si tu compilador de C++ se quejara de algo, cámbialo.

Alejandro



Uno de los problemas es que tratas de usar código viejo con un compilador nuevo. Desde hace algo más de diez años que stdlib.h, time.h y iostream.h ya no pertenecen al lenguaje C++

 


Re: Numeros Aleatorio please
Enviado por _malcom_ el día 2 de febrero de 2005

Alejandro_ sigue sin coger la biblioteca <iostream>,

El compilador que uso es "Dev-C++" deberia usar un compilador mas antiguo para que me funcionara?? cual usais vosotros, donde lo consigo, he probado instalar varios como el cygwin y otro (pero no me acuerdo del nombre) y tuve problemas, y hasta el momento el DEV++ me va de coña, lo unico que no voy a poderrrr compilar el numero aleatorio de ninguna forma???? juerrr...

Alguna sugerencia??

Gracias #_# !

 
Re: Re: Numeros Aleatorio please
Enviado por carmamezo el día 3 de febrero de 2005

y por qué no quitas la librería iostream.h??? esa librería contiene las funciones cin y cout entre otras, y por lo que veo tu usas printf() y scanf(), por tanto pon en lugar de iostream.h stdio.h.
El código quedaría mas o menos así:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main()
{
int a,x;

srand((unsigned)time(NULL));
while(x<=6)
{
num=randon(37);
//num=rand()%37;
printf(\"%d\",num);
}
}
Si lo que quieres es detener el programa durante unos milisegundos prueba las funciones, Sleep() de windows.h, o sleep() o delay() de dos.h creo.
Espero que ahora te funcione,
un saludo.

 

Re: Re: Numeros Aleatorio please
Enviado por Alejandro_ el día 3 de febrero de 2005

El código de arriba lo compilé en el Dev-C++, y es código estándar, así que debe poder compilarse con cualquier compilador no más antiguo que 10 años.

¿Estás creando un proyecto C++ o C?

Alejandro

 


Re: Numeros Aleatorio please
Enviado por _malcom_ el día 3 de febrero de 2005

Jurr si quito la libreria iostream, me dice el siguiente error
[Linker error] undefined reference to `randon'

asi que... no se que pasa, si vosotros podeis compilarlo y yo no, esta claro que el problema es mio ¬¬! pero utilizo el DEV-C++ para compilarlo Alejandro, tu tb?? y te deja compilarlo??

Dime O_o!!

 
Re: Re: Numeros Aleatorio please
Enviado por Alejandro_ el día 4 de febrero de 2005

Sí, uso el Dev-C++, con el mismo código que escribí arriba.

Lo que seguramente vas a necesitar es algún libro de C++, donde no vas a encontrar "randon" ni "random", ni mucho menos "randomize". Y si en tu nuevo libro llegase a figurar #include <iostream.h>, devuélvelo.

Alejandro

 
Re: Re: Re: Numeros Aleatorio please
Enviado por Khriztian el día 30 de marzo de 2005

Prueba este ....... ejemplo :

#include <stdio.h>

int main()
{

int i, num;

for(i=0; i<10; i++)
{
num=rand()%1001;
printf("\nEl numero aleatorio %i es ..: %i", i, num);
}

}

 
Re: Re: Re: Re: Numeros Aleatorio please
Enviado por yop el día 14 de abril de 2005

Alguien sabe como generar numeros aleatorios mayores??? Por ejemplo del 1 al 100000????

 
Re: Numeros Aleatorio please
Enviado por C MASTER el día 17 de abril de 2005

por lo que vi ,pusiste "iostream.h", entre comillas, lo que debes hacer el ponerlo entre esas dos cosas: <>
asi deberia funcionarte

 




Re: Re: Numeros Aleatorio please
Enviado por el_capo_de_c el día 18 de junio de 2006

a mi me anda el randomize(), pero uso borland c, del año del arquero
no se si es rand(limite) o random(limite), pero generan numeros al azar realmente solo si ejecutaste la funcion randomize()
creo q randomize() esta en time.h y rand/om() en stdlib.h

 
Re: Re: Re: Numeros Aleatorio please CUIDADO!!
Enviado por Luis el día 29 de junio de 2006

Cuidado con utilizar cosas como:
n=rand()%37;

NO da un número aleatorio UNIFORMEMENTE distribuido entre 0 y 36.

Explicacion:
La cantidad de valores distintos queda rand() NO es multipo de 37
y por tanto la distribución NO es uniforme.
La probabilidad de sacar 0 ó 1 es ligerísimamente superior a sacar 35 o 36 (por poner un ejemplo).

Explico de nuevo con un ejemplo:
suponer que rand() da número aleatorios entre 0 y 9
y nosotros queremos numeros aleatorios entre 0 y 2
si aplicamos n=rand()%3 está claro que tenemos un número entre 0 y 2 PERO:
el 0 sale con: 0,3,6,9
el 1 sale con: 1,4,7
el 2 sale con: 2,5,8
es decir, es mas probable que salga el 0 !!!

Saludos.
Luis.

 
Re: Re: Re: Re: Numeros Aleatorio please CUIDADO!!
Enviado por shamero el día 4 de diciembre de 2007

luis aflojale a la paja

 




Re: Numeros Aleatorio please
Enviado por ubuntero07 el día 1 de octubre de 2008

Mira yo trabajo en linux y lo he compilado con gcc y g++ y te servira de esta manera

compilado asi :

gcc nombre.c -o nombre.exe
#include <stdio.h>
#include<time.h>
int main()
{

int i, num;

srand((unsigned)time(NULL));
for(i=0; i<10; i++)
{
num=rand()%37;
if (num<10)
printf("\nEl numero aleatorio %i es ..: 0%i", i, num);
else
printf("\nEl numero aleatorio %i es ..: %i", i, num);
}printf("\n");

}

 
Re: Re: Numeros Aleatorio please
Enviado por MiguelViba el día 19 de noviembre de 2008

Podría decirme alguien la forma de sacar Nºs aleatoriosentre el 10 y el 20 por ejemplo? con el % y el número te saca los Nºs del 0 al número. Como se puede acotar el valor inferior de los Nºs aleatorios?

 



Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network