#define MT_LEN 624 | |
extern void mt_init(void); | |
extern void mt_refill(); | |
extern int mt_index; | |
extern unsigned int mt_buffer[MT_LEN]; | |
static inline unsigned int mt_random(void) | |
{ | |
unsigned int * b = mt_buffer; | |
int idx = mt_index; | |
if (idx == MT_LEN*sizeof(unsigned int)) { | |
mt_refill(); | |
idx = 0; | |
} | |
mt_index += sizeof(unsigned int); | |
return *(unsigned int *)((unsigned char *)b + idx); | |
} |