[C con Clase] Funcion para números aleatorios random
Diego
diegoartesanal en gmail.com
Sab Mar 3 18:36:21 CET 2012
Muchas gracias por las respuestas.
Ahora sí funciona arreglando la inicialización del srand().
Aunque testeando como dijo Steven , no es TAN aleatorio, suele repetir
algunos números .
¿Existe otro cálculo para alterar esto Steven?.
Saludos desde el Perú y nuevamente gracias.
Diego.
El 3 de marzo de 2012 12:14, Asdrúbal Iván Suárez Rivera <
asdrubal.ivan.suarez.rivera en gmail.com> escribió:
> Curiosamente tuve un problema similar hace unos días... Yo lo resolví de
> esta forma
>
> Donde:
>
> int generaNroAleatorio(){
> int num,c;
> srand(time(NULL));
> num = limite_inferior + rand()
> %(limite_superior-limite_inferior); // genero nro aleatorio entre 0 y 9
>
> return num;
>
> }
>
> pon
>
> int generaNroAleatorio(){
> int num,c;
> static bool inicializado = false;
>
> if(!inicializado){
>
> srand(time(NULL));
> inicializado = true;
> }
> num = limite_inferior + rand()
> %(limite_superior-limite_inferior); // genero nro aleatorio entre 0 y 9
>
> return num;
> }
>
>
> La variable con la palabra clave static SÓLO será inicializada una vez. La
> semilla por algunas razones debería inicializarse una vez. Prueba ahora a
> ver
>
>
> El 3 de marzo de 2012 12:06, Diego <diegoartesanal en gmail.com> escribió:
>
>> Hola a todos. Bueno en primer lugar, sigo teniendo problemas (debe ser mi
>> ISP : Movistar Perú) que tengo problemas y no puedo entrar a
>> c.conclase.net, tuve que finalmente usar en proxy para poder ingresar
>> nuevamente a la web.
>>
>> Bueno, voy a lo siguiente, estoy terminando de hacer una buscaminas con
>> listas dinámicas y sólo me falta ubicar las minas en el tablero, para ellos
>> quiero generar posiciones de manera aleatoria, estoy probando con este
>> código:
>>
>> Hago uso de 2 constantes:
>>
>> #define limite_inferior 0
>> #define limite_superior 10
>>
>>
>>
>> Tengo mi función generaNroAleatorio
>>
>>
>> int generaNroAleatorio(){
>> int num,c;
>> srand(time(NULL));
>> num = limite_inferior + rand()
>> %(limite_superior-limite_inferior); // genero nro aleatorio entre 0 y 9
>>
>> return num;
>>
>> }
>>
>>
>> y desde el main la invoco así:
>>
>>
>> ..... case '7':
>> for (int j = 0 ; j< 4; j++) {
>> p = ma.generaNroAleatorio();
>> cout<<"n :"<<p;
>> }
>> break;
>>
>> Simplemente estoy tratando de ver los números que genera, resulta que
>> cuando utilizo este *for* en el main, todos los números salen iguales,
>> si lo hago de manera manual (apretando '7' de una vez) para ver qué sale,
>> también siempre sale el mismo rango de número. Según tenía entendido la
>> función srand() define la semilla de dónde se generan los números
>> aleatorios, pero bueno, no he encontrado solución todavía.
>> Mi objetivo es poder generar números aleatorios y guardarlos en un vector
>> ya que esos números los utilizaré como posiciones para colocar las minas en
>> mi juego. Luego validaré que los números no se repitan .
>>
>> Bueno , espero que alguien me pueda dar una mano .
>> Saludos gente!
>> Diego.
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
>
> --
> Asdrúbal Iván Suárez Rivera
>
> *El éxito de alguien que enseña no es que sepa mucho, sino que lo poco
> que sabe lo sepa hacer llegar.*
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120303/b101a65a/attachment.html>
Más información sobre la lista de distribución Cconclase