source:
MondoRescue/branches/2.2.9/mindi-busybox/shell/random.h@
3770
| Last change on this file since 3770 was 3320, checked in by , 11 years ago | |
|---|---|
|
|
| File size: 733 bytes | |
| Rev | Line | |
|---|---|---|
| [3320] | 1 | /* vi: set sw=4 ts=4: */ |
| 2 | /* | |
| 3 | * $RANDOM support. | |
| 4 | * | |
| 5 | * Copyright (C) 2009 Denys Vlasenko | |
| 6 | * | |
| 7 | * Licensed under GPLv2, see file LICENSE in this source tree. | |
| 8 | */ | |
| 9 | #ifndef SHELL_RANDOM_H | |
| 10 | #define SHELL_RANDOM_H 1 | |
| 11 | ||
| 12 | PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN | |
| 13 | ||
| 14 | typedef struct random_t { | |
| 15 | /* Random number generators */ | |
| 16 | int32_t galois_LFSR; /* Galois LFSR (fast but weak). signed! */ | |
| 17 | uint32_t LCG; /* LCG (fast but weak) */ | |
| 18 | } random_t; | |
| 19 | ||
| 20 | #define UNINITED_RANDOM_T(rnd) \ | |
| 21 | ((rnd)->galois_LFSR == 0) | |
| 22 | ||
| 23 | #define INIT_RANDOM_T(rnd, nonzero, v) \ | |
| 24 | ((rnd)->galois_LFSR = (nonzero), (rnd)->LCG = (v)) | |
| 25 | ||
| 26 | #define CLEAR_RANDOM_T(rnd) \ | |
| 27 | ((rnd)->galois_LFSR = 0) | |
| 28 | ||
| 29 | uint32_t next_random(random_t *rnd) FAST_FUNC; | |
| 30 | ||
| 31 | POP_SAVED_FUNCTION_VISIBILITY | |
| 32 | ||
| 33 | #endif |
Note:
See TracBrowser
for help on using the repository browser.
