[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