[C con Clase] Generación números aleatorios

David Fire ddfire en gmail.com
Mie Ene 6 20:29:01 CET 2010


hola
para la misma semilla vas a tener los mismos resultados.
deberias tomar una semilla distinta cada vez.
un buen valor es el tick count de la maquina o la posision del mouse
(siempre y cuando tenga mouse) o el tiempo que tarda el usuario en
introducir dos valores.
la fecha en segundos tambien puede ser, sobre todo por que no se repite.
David

El 6 de enero de 2010 14:58, Javier Cancio del Busto
<sepholin en gmail.com>escribió:

> Hola!
>
> Estoy haciendo un programa que simula un juego de tablero de 9 casillas.
> Debe ser capaz de posicionar una ficha en el tablero una vez he puesto yo la
> mía, por lo que he hecho un algoritmo simple tal como:
>
> - Posiciono mi ficha
> - Genero número aleatorio rango 0-8
> - Compruebo la casilla correspondiente al número, para ver que está libre
> - Si está libre: Pongo ficha de la máquina
> - Si no: Vuelvo a generar el número y repetir los pasos.
>
> El programa lo hace correctamente, posiciona una ficha en una casilla
> vacía, el problema es que cuando yo pongo mi ficha, por ejemplo, en la
> casilla central, la máquina siempre posiciona la suya en la misma casilla,
> es como si la semilla que tomase por defecto lo llevase a generar ese número
> siempre. Mi código es:
>
> do {
>                 int casilla = (rand()%9); // Se genera una casilla
> aleatoria, entre 0 - 8
>
>                 if (ocupados[casilla] == 0) // Si esta libre..
>                 {
>                     ...
>                    codigo
>                    ...
>
>                     fichaFijada=1; // Hemos puesto la ficha, salimos del
> bucle
>                     ocupados[casilla]=1; // Indicamos que esa casilla ahora
> esta ocupada por la maquina
>
>                 }
>             } while (fichaFijada == 0);
>
> ¿Cómo podría generar números en ese mismo rango (0-8) con una semilla de
> forma que no siempre generase el mismo número?
> He probado con srand(time(NULL)) pero a veces tarda demasiado (unos
> segundos) en generarlo (y por consiguiente posicionar su ficha) y da la
> sensación de que el programa se ha colgado...
>
> ¿Alguna idea amig en s?
>
> Muchas gracias!
>
> --
> ======================
>  Javier Cancio del Busto
> ======================
>      http://sepho.es/
> ======================
>
> _______________________________________________
> 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
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100106/7f010ecf/attachment.html>


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