[C con Clase] Funcion para números aleatorios random

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Sab Mar 3 18:14:27 CET 2012


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.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120303/4f139465/attachment.html>


Más información sobre la lista de distribución Cconclase