diff options
Diffstat (limited to 'shell/random.h')
-rw-r--r-- | shell/random.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/shell/random.h b/shell/random.h index 180c48abb..c4eb44c13 100644 --- a/shell/random.h +++ b/shell/random.h | |||
@@ -12,16 +12,24 @@ | |||
12 | PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN | 12 | PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN |
13 | 13 | ||
14 | typedef struct random_t { | 14 | typedef struct random_t { |
15 | /* Random number generators */ | 15 | /* State of random number generators: */ |
16 | int32_t galois_LFSR; /* Galois LFSR (fast but weak). signed! */ | 16 | |
17 | uint32_t LCG; /* LCG (fast but weak) */ | 17 | /* Galois LFSR (fast but weak) */ |
18 | int32_t galois_LFSR; /* must be signed! */ | ||
19 | |||
20 | /* LCG (fast but weak) */ | ||
21 | uint32_t LCG; | ||
22 | |||
23 | /* 64-bit xorshift (fast, moderate strength) */ | ||
24 | uint32_t xs64_x; | ||
25 | uint32_t xs64_y; | ||
18 | } random_t; | 26 | } random_t; |
19 | 27 | ||
20 | #define UNINITED_RANDOM_T(rnd) \ | 28 | #define UNINITED_RANDOM_T(rnd) \ |
21 | ((rnd)->galois_LFSR == 0) | 29 | ((rnd)->galois_LFSR == 0) |
22 | 30 | ||
23 | #define INIT_RANDOM_T(rnd, nonzero, v) \ | 31 | #define INIT_RANDOM_T(rnd, nonzero, v) \ |
24 | ((rnd)->galois_LFSR = (nonzero), (rnd)->LCG = (v)) | 32 | ((rnd)->galois_LFSR = (rnd)->xs64_x = (nonzero), (rnd)->LCG = (rnd)->xs64_y = (v)) |
25 | 33 | ||
26 | #define CLEAR_RANDOM_T(rnd) \ | 34 | #define CLEAR_RANDOM_T(rnd) \ |
27 | ((rnd)->galois_LFSR = 0) | 35 | ((rnd)->galois_LFSR = 0) |