Añado aqui la función RAND() recuperada del foro de los Mojon que utilizo en mis pruebas con Z88DK...
Instrucciones de uso:
0.- Añadir el include para la libreria random.h
1.- Inicializar la semilla con:
seed1 [0] = a;
seed2 [0] = b;
srand ();
2.- Usar la función en cualquier punto del programa:
c = rand () % 12; // Un número entre 0 y 11.
c = a + (rand () % (b - a + 1)); // Un número entre a y b, ambos inclusive, con a < b.
Añado aqui los comentarios de Na_th_an: (por cierto, gracias desde aquí de nuevo).
Cada vez que queráis un random, llamad a rand. Da un valor entre 0 y 255. Con módulos y ANDs tenéis lo que necesitéis.
Es mejor procurar que tus randoms sean en rangos que sean potencias de 2 porque así no tienes que dividir, que es lento y costoso. Por ejemplo, para seleccionar una columna de la pantalla al azar, al ser 32 los posibles valores y ser 32 potencia de 2, podemos hacer:
c = rand () & 31;
Un AND aritmético es inmediato, mientras que para dividir y hacer un módulo hay que tirar de una función porque el z80 no divide.
Función RAND para Z88DK (Kit ZX-Uno)
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Función RAND para Z88DK (Kit ZX-Uno)
- Adjuntos
-
- random.h
- (1.09 KiB) Descargado 239 veces
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
Re: Función RAND para Z88DK (Kit ZX-Uno)
Anda, justamente estaba peleándome con el rand de zxbasic porque me saca aleatorios demasiado poco aleatorios XD
Miraré si con este código se mejora la cosa. Lo uso para no meter a mano posiciones de sprites de los enemigos en las pruebas.
Grachie!
Miraré si con este código se mejora la cosa. Lo uso para no meter a mano posiciones de sprites de los enemigos en las pruebas.
Grachie!