/* vi: set sw=4 ts=4: */ | |
/* | |
* $RANDOM support. | |
* | |
* Copyright (C) 2009 Denys Vlasenko | |
* | |
* Licensed under GPLv2, see file LICENSE in this tarball for details. | |
*/ | |
typedef struct random_t { | |
/* Random number generators */ | |
int32_t galois_LFSR; /* Galois LFSR (fast but weak). signed! */ | |
uint32_t LCG; /* LCG (fast but weak) */ | |
} random_t; | |
#define INIT_RANDOM_T(rnd, nonzero, v) \ | |
((rnd)->galois_LFSR = (nonzero), (rnd)->LCG = (v)) | |
uint32_t next_random(random_t *rnd) FAST_FUNC; |