static guint32 sfmt_rand32 (void) { if (r_i == RSIZE) { fill_array32(rbuf, RSIZE); r_i = 0; } return rbuf[r_i++]; }
char get_random_card(char maxv) { #ifdef USE_MERSENNE_TWISTER #ifdef USE_BUFFER if (bp >= BUFFER_SIZE) { fill_array32((uint32_t*) buffer, BUFFER_SIZE/4); bp = 0; } return ((buffer[bp++] & 127) >> 1) % maxv; #else return (char)(gen_rand32() % maxv); #endif #else return (char) (rand() % maxv); #endif }
static int sfmt_array_setup (void) { int err = 0; if (rbuf == NULL) { rbuf = simd_malloc(RSIZE * sizeof *rbuf, &err); #if 0 if (!err) { fprintf(stderr, "sfmt_array_setup: allocated array of size %d\n", RSIZE); } #endif } if (rbuf != NULL) { fill_array32(rbuf, RSIZE); r_i = 0; } return err; }