PDA

Ver la versión completa : Asignar un valor aleatorio a una variable en C/C++



Nukemhigh
20/04/2005, 16:49
Hola! Estoy trabajando un juego de rol basado en texto, tipo Softporn, pero ambientado en la Edad Media. Las reglas para ejecutar habilidades exigen una "tirada de dados". He buscado cómo darle valor aleatorio a una variable y he encontrado una funcion personal la cual no entiendo y un comando que no me funciona, aun cargando la librería correspondiente. Please, help me.

kmkzk
20/04/2005, 17:09
Puedes usar la funcion int rand(void), creo que es de la libreria stdlib.h.
Si quieres que esta funcion te devuelva un numero aleatorio entre 1 y 6, puedes usarlo de la siguiente manera:
var = 1+ (rand() % 6);
saludos

edit: Estas haciendo el juego para la Gp32? :D

Nukemhigh
20/04/2005, 17:23
Bueno, la idea de crear este juego surgió mucho antes de conocer la gp32. Por aquel entonces yo programaba en BASIC, y tras crear un juego tipo Pong en el espacio con criticos y cosas wapas deje de programar porque ví que BASIC no te lleva a ninguna parte. Después me metí en C con Turbo C y ahora stoy con el Dev-C++. Esta es la historia de mi vida xD. Si termino el juego (cosa que espero), intentaré portarlo para gp32. Eso sí, me tendreis que echar un cable, porque llevo poco tiempo en esto ;). Muxas gracias por la ayuda, acabas de salvar un proyecto prometedor xD.

kmkzk
20/04/2005, 17:30
Yo antes usaba DevC++ para programar en windows, pero al final me pase a visualC, ya que se me hacia mas rapido, y no tenia algunos bugs que tenia el DevC++. Pero bueno, eso no quiere decir nada, hice cosillas con el DevC, y pienso que esta bastante bien.
Pues nada, animo con el proyecto! Ya nos lo enseñaras cuando lo termines :)

Puck2099
20/04/2005, 17:38
Puedes usar la funcion int rand(void), creo que es de la libreria stdlib.h.
Si quieres que esta funcion te devuelva un numero aleatorio entre 1 y 6, puedes usarlo de la siguiente manera:
var = 1+ (rand() % 6);
saludos

edit: Estas haciendo el juego para la Gp32? :D

No se te olvide que primero hay que declarar la semilla con srand(semilla) donde semilla es un entero.

Ahora, la gracia está en que esa semilla sea cada vez distinta o sino siempre te generará los mismos números. Yo te recomendaría hacer que al iniciar el juego el jugador pulsara un botón y ahí le metes un srand( GpTickCountGet() ).

Saludos

kmkzk
20/04/2005, 17:45
No se te olvide que primero hay que declarar la semilla con srand(semilla) donde semilla es un entero.

Ahora, la gracia está en que esa semilla sea cada vez distinta o sino siempre te generará los mismos números. Yo te recomendaría hacer que al iniciar el juego el jugador pulsara un botón y ahí le metes un srand( GpTickCountGet() ).

Saludos

Cierto, cierto! :D
Yo que soy un coder chapucero, rastrero y alcoholico, generalmente se me olvida hacer eso, y bueno... los programas pierden sentido aleatorio.
saludos

Nukemhigh
20/04/2005, 18:15
entonces srand(semilla) y var = 1+ (rand() % semilla); o
srand(semilla) y var = 1+ (rand() % 6); //6 es un ejemplo

Puck2099
20/04/2005, 18:28
entonces srand(semilla) y var = 1+ (rand() % semilla); o
srand(semilla) y var = 1+ (rand() % 6); //6 es un ejemplo

srand(semilla) y var = 1+ (rand() % 6);

Saludos

Nukemhigh
21/04/2005, 18:21
voy a probar a ver

DCLive
22/04/2005, 18:53
Vaya pues este post me ha echado un cable.

Hace tiempo comence ha hacer un juego para GP32, el cual tengo parado. El caso es que necesito generar valores aleatorios, y yo habitualmente he utilizado el valor devuelto por el timer. El problema de la GP32 es que tiene temporizadores, muy bonitos y utiles ellos, pero no reloj de sistema. Asi que mis valores aleatorios tenian poco de aleatorios.

Bueno, probare, cuando me sea posible, a utilizar el truco de la pulsación de boton. Parece socorrido. Este post me ha sido muy util

Un saludo a todos
DCLive

Nukemhigh
25/04/2005, 15:42
Uff, tras indagar un poco más he conseguido por fin hacerlo, aunque no he utilizado srand(semilla). Por el contrario, he creado limite mínimo y máximo para el valor. A ver si mañana subo el código.

Un saludo y gracias por la ayuda!
Nukemhigh

Puck2099
25/04/2005, 15:47
Uff, tras indagar un poco más he conseguido por fin hacerlo, aunque no he utilizado srand(semilla). Por el contrario, he creado limite mínimo y máximo para el valor. A ver si mañana subo el código.

Un saludo y gracias por la ayuda!
Nukemhigh

Pero si no cambias la semilla siempre usará la definida por defecto (creo que era el srad(1)) y siempre tendrás la misma secuencia de valores pseudo aleatorios...

Saludos

Nukemhigh
27/04/2005, 16:20
Negativo. Son valores totalmente aleatorios, que van desde un limite minimo a uno maximo y siempre diferentes. Aun no he podido postear el código (este ordenador no es mio), pero lo he sacado de uno de los ejercicos de la enciclopedia del C++.

Puck2099
27/04/2005, 17:37
Negativo. Son valores totalmente aleatorios, que van desde un limite minimo a uno maximo y siempre diferentes. Aun no he podido postear el código (este ordenador no es mio), pero lo he sacado de uno de los ejercicos de la enciclopedia del C++.

Perdona, pero un ordenador es incapaz de generar valores total o parcialmente aleatorios. Lo que hace es aplicarle una fórmula o algoritmo a la semilla y si siempre usas la misma semilla siempre dará los mismos resultados.

Saludos

Uncanny
27/04/2005, 20:28
Negativo. Son valores totalmente aleatorios, que van desde un limite minimo a uno maximo y siempre diferentes. Aun no he podido postear el código (este ordenador no es mio), pero lo he sacado de uno de los ejercicos de la enciclopedia del C++.
Puck2099 tiene razón, para obtener valores aleatorios que se puedan considerar como tales haría falta aplicar tecnicas "reales" para generarlos, ya sean simples como el lanzamiento de dados, girar una peonza o usar una ruleta hasta metodos más complejos, luego anotar y crear una tabla con los resultados.

Lo que hagas en un ordenador, más aun cuando hablamos de programación, se hace basandose en técnicas deterministas, por tanto no aleatorias, porque para obtener esos valores se habrá usado un algoritmo. Prueba de ello es la funcion rand() para generar numeros denominados pseudo-aleatorios a partir del valor de la semilla que se le pasa como parámetro a la función srand(). Podrás conseguir valores más "aleatorios" que otros, dentro de la pseudo-aleatoriedad de los resultados, según la semilla que uses y de que esta cambie continuamente antes de generar otro numero aleatorio, como puede ser usar la hora actual como parametro en srand(), por eso como bien dice Puck2099, si usas siempre la misma semilla estarás generando practicamente los mismos resultados.

Solo por estar relacionado con el tema, dentro del mismo stdlib.h y siguiendo el estandar POSIX, las funciones random() y srandom() se consideran funciones que generan valores con una "aleatoriedad" algo mayor que con rand() y srand() respectivamente, pero aun así, siguen siendo los valores que dan como resultado siguen considerandose pseudo-aleatorios.

kounch
28/04/2005, 00:25
Sobre números pseudoaleatorios

http://webs.ono.com/usr005/jsuarez/aleat3.html
http://www.matematicas.net/paraiso/cripto.php?id=aleator3

Sobre números aleatorios reales

http://webs.ono.com/usr005/jsuarez/aleat2.html

Más datos (pero en inglés):

http://en.wikipedia.org/wiki/PRNG

Nukemhigh
29/04/2005, 09:13
no he utilizao srand si no que he declarao un long random seguido de time(0) :loco: (que jodido es este vocabulario)

ajota
29/04/2005, 11:42
creo que llego tarde, aun asi mas vale tarde que nunca :P

En una de mis practicas de programacion teniamos unas funciones que se encargaban de generar de numeros pseudo-aleatorios enteros positivos. La verdad es que funciona de **** madre, aqui os lo pongo:



void InicializaGeneradorNumerosAleatorios(){
srand(time(NULL));
}

int NumeroAleatorio(int maximo){
// Genera un numero aleatorio entre 0 y maximo-1
int na;
na = (int)(((double)maximo)*rand()/(RAND_MAX+1.0));
return na;
}



desde el main() inicializas la funcion InicializaGeneradorNumerosAleatorios(); .

Para generar los numeros aleatorios dentro de un intervalo [0,n[ (es decir, entre 0 y n-1, siendo n un entero) y adjudicarselos a una variable, vector, array o lo que quieras deberas llamar a la funcion del siguiente modo:

var=NumeroAleatorio(n);
//cambias n por un numero entero tal y como he comentado en el parrado anterior y ya está :)

vamos... la cosa quedaria tal que asi (pongo un ejemplo):


int main(){
int var;
InicializaGeneradorNumerosAleatorios(); //<- solo inicializar 1 vez!
var=NumeroAleatorio(10);
}


la variable var obtendria como valor un entero aleatorio entre 0 y 9.
Como podeis ver es sencillo de utilizar :)


hasta luego

Patxi
29/04/2005, 17:06
<curiosidad>
El procesador Via C3 viene con un generador de números aleatorios por hardware a partir de no se que revisión del core. Creo que el core que lo incluía por promera vez se llamaba Nemeia o algo así.
</curiosidad>

Nukemhigh, si no pones una semilla, los números serán aparentemente aleatorios. La cosa es que cada vez que ejecutes el programa saldrán los mismos números, en el mismo orden. Si pones siempre la misma sucede lo mismo lógicamente.

saludos

Nukemhigh
03/05/2005, 17:20
Puse semilla con time(0). :musico: Arriba Led Zeppelin :musico: xD

DCLive
20/05/2005, 09:16
Acorde a todo esto, quiero comentar cual es mi problema con los numeros aleatorios en la GP32.

A la hora de generar la semilla se suele hacer una llamada a la función Time() de esta forma es el reloj del sistema el que te da un numero para utilizarlo de semilla.

El gran problema es que la GP32 carece de reloj, aunque tiene temporizadores, con lo cual no se puede hacer una llamada a Time() para obtener un numero en función del reloj.

Me gustaria saber como resolveis vosotros este problema en la GP32.

Gracias de antemano
DCLive

Puck2099
20/05/2005, 09:20
Acorde a todo esto, quiero comentar cual es mi problema con los numeros aleatorios en la GP32.

A la hora de generar la semilla se suele hacer una llamada a la función Time() de esta forma es el reloj del sistema el que te da un numero para utilizarlo de semilla.

El gran problema es que la GP32 carece de reloj, aunque tiene temporizadores, con lo cual no se puede hacer una llamada a Time() para obtener un numero en función del reloj.

Me gustaria saber como resolveis vosotros este problema en la GP32.

Gracias de antemano
DCLive


Hola,

¿Te has leído todo el hilo?, más arriba ya comenté que una buena idea es usar un GpTickCountGet cuando se pulse un botón para usar el número de ticks que te devuelva como semilla :)

Saludos

DCLive
20/05/2005, 10:03
Si, me he leido todo el hilo. Pero no se si me funcionara.

Te explico. Mi programa no tiene que obtener un unico numero aleatorio, sino una serie de ellos. Lo hago asi porque quiero mostrar una serie de "elementos" en pantalla, y la apariencia varia en función de los valores obtenidos. Evidentemente no puedo pedirle al jugador que pulse un boton para cada elemento a pintar en pantalla.

Gracias por tu ayuda.
DCLive

Puck2099
20/05/2005, 10:21
Si, me he leido todo el hilo. Pero no se si me funcionara.

Te explico. Mi programa no tiene que obtener un unico numero aleatorio, sino una serie de ellos. Lo hago asi porque quiero mostrar una serie de "elementos" en pantalla, y la apariencia varia en función de los valores obtenidos. Evidentemente no puedo pedirle al jugador que pulse un boton para cada elemento a pintar en pantalla.

Gracias por tu ayuda.
DCLive

Hola,

Creo que no me has entendido :)

Cuando pulsas un botón y haces lo que te he dicho para obtener un número, ese número tienes que pasárselo como parámetro a la función srand(int numero).

Con eso no generas un número, sino toda una serie de números aleatorios a los que podrás acceder con rand(), cada vez que la invoques te devolverá un número distinto.

Si no me entiendes dímelo e intento explicarme mejor :brindis:

Saludos

DCLive
20/05/2005, 10:25
Creo que te entiendo bastante bien. La verdad es que me has servido de mucha ayuda, y me he dado cuenta de un error en mi codigo.

Esta tarde, cuando llegue a casa, voy a probarlo y continuo avanzando en mi juego.

Un saludo y gracias por tu ayuda.
DCLive

TRaFuGa
18/06/2005, 13:16
Pues en el tema de inicializar la semilla (yo use lo mismo para un trabajo de clase que habia que sacar bolas del 1 al 80), hacia que la semilla se inicializara con la hora del sistema para que cada vez fuera algo diferente. si encuentro el ejercicio posteo el codigo.

jjdrako
31/07/2005, 12:43
pues a mi no me da numeros aleatorios ?¿?¿?¿?

quiero es numeros aleatorios del 0 al 39 40 veces, lo que he hecho es:

llamar a una funcion cuando se inicia juego y en la funcion pongo esto

srand(GpTickCountGet());

for(i=0; i<40; i++)
{
num=(1+ (rand() % 40)) - 1;
............
}

pero lo que me da es empezando desde el 1, luego 2, 3, 4...... vamos que mas que aleatorio es seguido, que es lo que sale mal??

Puck2099
31/07/2005, 13:01
¿Podrías poner algo más de código, please?

¿Llamas a la función nada más arrancar el juego?, si es así siempre tendrá la misma semilla, usa mejor el srand cuando se pulse un botón.

Si pones algo más de código lo tendremos más claro para ver tu problema, porque por lo visto ahí debería funcionarte bien (aunque no entiendo para que sumas 1 y luego lo restas...).

Saludos

jjdrako
31/07/2005, 13:33
estoy haciendo el juego del guiñote

cuando pulsa el boton A para empezar nuevo juego, llamo al metodo barajear

que tiene esto (espero que lo entiendas ;))


void Baraja::Barajear()
{
char *aux[40];
int i,num;

// las 40 cartas en orden
carta[0]="B01";carta[1]="B02";carta[2]="B03";carta[3]="B04";carta[4]="B05";
carta[5]="B06";carta[6]="B07";carta[7]="B10";carta[8]="B11";carta[9]="B12";
carta[10]="C01";carta[11]="C02";carta[12]="C03";carta[13]="C04";carta[14]="C05";
carta[15]="C06";carta[16]="C07";carta[17]="C10";carta[18]="C11";carta[19]="C12";
carta[20]="E01";carta[21]="E02";carta[22]="E03";carta[23]="E04";carta[24]="E05";
carta[25]="E06";carta[26]="E07";carta[27]="E10";carta[28]="E11";carta[29]="E12";
carta[30]="O01";carta[31]="O02";carta[32]="O03";carta[33]="O04";carta[34]="O05";
carta[35]="O06";carta[36]="O07";carta[37]="O10";carta[38]="O11";carta[39]="O12";

// se hace una copia de las cartas
for (i=0; i<40; i++)
aux[i]=carta[i];

i=0;
GpSrand(GpTickCountGet());
// se ordena las 40 cartas
while(i<40)
{
// representar la accion de barajear
GpRectFill(NULL, &gpDraw[nflip], 0, 0, 320, 240, 0x00);
GpTextOut(NULL, &gpDraw[nflip], 5, 220, "Barajeando...", 0xff);
GpRectFill(NULL, &gpDraw[nflip], 5, 235, 5*i, 240, 0xff);
// numero aleatorio del 0 al 39 para colocar las cartas de forma aleatoria
num=(GpRandN(40));

// si no esta colocada la carta en la baraja
if (strcmp(aux[num],"OK")!=0)
{
// coloca la carta que ha salido en la posicion que sigue
carta[i]=aux[num];
// indica que la carta ya se ha colocado
aux[num]="OK";
// contando las cartas en la baraja
i++;
}
GpSurfaceFlip(&gpDraw[nflip++]);
nflip&=0x01;
}
// numero cartas repartidas
num_monton=0;
}

pero lo que me hace en vez de "barajearlas" es ponerlas de la 1ª a la ultima sin desordenarlas aleatoriamente como yo quiero

jjdrako
01/08/2005, 09:19
a ver lo que viene antes de eso es esto:

GpKeyGetEx(&boton);
GpSrand(GpTickCountGet());

y entonces llama al metodo barajear del objeto baraja, pero me da los numeros seguidos y nada de aleatorios :( que es lo que pasa??

oankali
01/08/2005, 09:50
A ver que te parece esta solución (sin testar):



void Baraja::Barajear()
{
char *aux[40];
int i,num;

// las 40 cartas en orden
aux[ 0]="B01";aux[ 1]="B02";aux[ 2]="B03";aux[ 3]="B04";aux[ 4]="B05";
aux[ 5]="B06";aux[ 6]="B07";aux[ 7]="B10";aux[ 8]="B11";aux[ 9]="B12";
aux[10]="C01";aux[11]="C02";aux[12]="C03";aux[13]="C04";aux[14]="C05";
aux[15]="C06";aux[16]="C07";aux[17]="C10";aux[18]="C11";aux[19]="C12";
aux[20]="E01";aux[21]="E02";aux[22]="E03";aux[23]="E04";aux[24]="E05";
aux[25]="E06";aux[26]="E07";aux[27]="E10";aux[28]="E11";aux[29]="E12";
aux[30]="O01";aux[31]="O02";aux[32]="O03";aux[33]="O04";aux[34]="O05";
aux[35]="O06";aux[36]="O07";aux[37]="O10";aux[38]="O11";aux[39]="O12";

// inicalizar la semilla.
// el jugador ya tiene que haber apretado como mínimo una vez un botón
// o siempre saldrá la misma serie
GpSrand(GpTickCountGet());

// se ordena las 40 cartas
for (i=39; i >= 0; i--)
{
// representar la accion de barajear
GpRectFill(NULL, &gpDraw[nflip], 0, 0, 320, 240, 0x00);
GpTextOut(NULL, &gpDraw[nflip], 5, 220, "Barajeando...", 0xff);
GpRectFill(NULL, &gpDraw[nflip], 5, 235, 5*(40-i), 240, 0xff);

// numero aleatorio del 0 al número_de_cartas_que_quedan_por_repartir - 1
num = GpRandN(i);

// coloca la carta que ha salido en la posición que sigue
carta[39-i] = aux[num];

// sacamos la carta de la lista de cartas que quedan por repartir
gm_memcpy(&aux[num], &aux[num + 1], (i - num) * sizeof(aux[0])));

GpSurfaceFlip(&gpDraw[nflip++]);
nflip&=0x01;
}

// numero cartas repartidas
num_monton=0;
}


No sé lo que pasará con GpRand() cuando i == 0. A lo mejor hay que hacer un test aparte.
En cuanto a tu semilla, la idea no es hacer una simple lectura de los botones, sinó que hay que esperar a que el jugador haya apretado un botón.
Lo que suelo hacer es usar GPSrand() cuando el usuario escoge la opción START de mis juegos.

Oankali.

jjdrako
01/08/2005, 10:18
no entiendo porque la tuya me da numeros aleatorios y la mia no, que mas da ir hacia alante que hacia atras como haces tu en el bucle?

y esto??, espara copiar las cosas de la memoria??-> gm_memcpy(&aux[num], &aux[num + 1], (i - num) * sizeof(aux[0]));

oankali
01/08/2005, 10:32
no entiendo porque la tuya me da numeros aleatorios y la mia no, que mas da ir hacia alante que hacia atras como haces tu en el bucle?

y esto??, espara copiar las cosas de la memoria??-> gm_memcpy(&aux[num], &aux[num + 1], (i - num) * sizeof(aux[0]));

Pues yo tampoco lo sé. Habría que utilizar el debugger.
Y sí, es para copiar la memória, una manera de hacer correr las cartas no repartidas hacia el principio de la baraja. Así el bucle siempre dura la mismo y no tengo que chequear si ya ha salido la carta o no.
¿Ha funcionado todo a la primera, sin retocar nada?

jjdrako
01/08/2005, 11:47
si bueno he tenido el problema ese que decias, cuando solo le quedaba una, la 0, se bloqueaba pero ya esta solucionado

gracias

^MiSaTo^
12/08/2005, 22:59
Pues por no abrir otro hilo igual...¡refloto!
He estado leyendo todo el hilo y me ha quedado más o menos claro el tema de hacer los números aleatorios... El caso es q uso las librerías de mirko y, la función GpSrand(GpTickCountGet()) no está. Me gustaría saber si hay alguna función de Mirko que haga lo mismo.Gracias
Saludos! ^____^

Puck2099
12/08/2005, 23:07
Pues por no abrir otro hilo igual...¡refloto!
He estado leyendo todo el hilo y me ha quedado más o menos claro el tema de hacer los números aleatorios... El caso es q uso las librerías de mirko y, la función GpSrand(GpTickCountGet()) no está. Me gustaría saber si hay alguna función de Mirko que haga lo mismo.Gracias
Saludos! ^____^

De Mirko no sé, pero supongo que podrás importar el <stdlib.h> y usar las funciones normales de números aleatorios (srand, rand, etc.).

Si no te queda claro dímelo y te pongo ejemplos :)

Saludos

^MiSaTo^
12/08/2005, 23:12
gracias puck qué rapidez!!
si supongo q puedo hacerlo, y si no te importa ponerme un ejemplo te lo agradecería, porque asi me quedaría claro del todo (espero)
Gracias

Puck2099
12/08/2005, 23:30
gracias puck qué rapidez!!
si supongo q puedo hacerlo, y si no te importa ponerme un ejemplo te lo agradecería, porque asi me quedaría claro del todo (espero)
Gracias

Je, es que estoy delante del ordenador corrigiendo bugs del Lady Killer y así me entretengo mientras compila :p

Yo uso el SDK oficial, así que esto que te voy a poner lo acabo de hacer con el manual de Mirko delante, puede tener fallos porque no lo he probado:



#include <stdlib.h>
// Incluimos el resto de librerías, inicializaciones, etc.
int semilla = 0;
int numero;
....
....
// Ahora inicializamos el timer
gp_initRTC();
...
...
// Aquí vamos a usar la pulsación de un botón para determinar la semilla
if (gp_getButton() & BUTTON_A) {
semilla = gp_getRTC(); // Asignamos el valor del contador a nuestra semilla
}
srand(semilla); // Usamos la semilla para generar la secuencia de números aleatorios
...
...
numero = rand()%100; // Generamos un número aleatorio entre 0 y 99.
...
...


Espero que te haya quedado claro :)

^MiSaTo^
13/08/2005, 11:22
Muchisimas gracias puck ahora si me ha quedado claro. A mi tb se me habia ocurrido el poder usar gp_initRTC() y gp_getRTC() pero no sabía muy bien como :)
Una duda muy tonta, ¿cada vez que necesite un aleatorio hago numero = rand()%(numero limite), no?
Y otra cosa, ¿es necesario inicializar la semilla a 0? lo digo porque tú al declararla lo haces, pero luego, cuando se va a usar, se le asigna el valor del RTC.
Ánimo con el Lady Killer que no veas que vicio le he pilladooooooooo
Gracias majo :)
un Saludo!

jjdrako
13/08/2005, 11:58
Una duda muy tonta, ¿cada vez que necesite un aleatorio hago numero = rand()%(numero limite), no?

pues si, cada vez que quieras un numero distinto tienes que hacer eso, lo que no hace falta que repitas es lo de pillara la semilla


Y otra cosa, ¿es necesario inicializar la semilla a 0? lo digo porque tú al declararla lo haces, pero luego, cuando se va a usar, se le asigna el valor del RTC.

lo de iniciar las variables son cosas de algunos programadores XD, es cierto que si le vas a asignar un valor antes de usar la variable, no hace falta ponerla a 0

^MiSaTo^
13/08/2005, 12:03
lo de iniciar las variables son cosas de algunos programadores XD,
Ya suponía, porque yo también soy muy dada a ello por culpa de Pascal xDD. Gracias por resolverme la duda.
Un saludo!

Puck2099
15/08/2005, 17:43
Muchisimas gracias puck ahora si me ha quedado claro. A mi tb se me habia ocurrido el poder usar gp_initRTC() y gp_getRTC() pero no sabía muy bien como :)
Una duda muy tonta, ¿cada vez que necesite un aleatorio hago numero = rand()%(numero limite), no?
Y otra cosa, ¿es necesario inicializar la semilla a 0? lo digo porque tú al declararla lo haces, pero luego, cuando se va a usar, se le asigna el valor del RTC.
Ánimo con el Lady Killer que no veas que vicio le he pilladooooooooo
Gracias majo :)
un Saludo!

Bueno, veo que ya te han contestado (he estado el finde fuera). Como te dicen no es necesario inicializar la semilla ya que luego le vas a asignar un valor, pero así te quitas posibles warnings del gcc :p

Ah, y gracias por lo del Lady Killer :)

Saludetes