Pseudo Random Number Generator (PRNG)
More...
Pseudo Random Number Generator (PRNG)
Various implementations of a PRNG are available:
- Tiny Mersenne Twister (default)
- Mersenne Twister
- Simple Park-Miller PRNG
- Musl C PRNG
- Fortuna (CS)PRNG
- Hardware Random Number Generator (non-seedable) HWRNG differ in how they generate random numbers and may not use a PRNG internally. Refer to the manual of your MCU for details.
By default, the auto_init_random
module is enabled, which initializes the PRNG on startup. However, there is no lower limit on the entropy provided at that time. Unless the periph_hwrng
module is used, entropy may be as little as zero (the constant may even be the same across devices).
|
file | random.h |
| Common interface to the software PRNG.
|
|
|
#define | RANDOM_SEED_DEFAULT (1) |
| Seed selected when all tries to collect seeds from a random source failed.
|
|
#define | PRNG_FLOAT (0) |
| Enables support for floating point random number generation.
|
|
|
void | random_init (uint32_t s) |
| initializes PRNG with a seed
|
|
void | random_init_by_array (uint32_t init_key[], int key_length) |
| initialize by an array with array-length init_key is the array for initializing keys key_length is its length slight change for C++, 2004/2/26
|
|
uint32_t | random_uint32 (void) |
| generates a random number on [0,0xffffffff]-interval
|
|
void | random_bytes (void *buf, size_t size) |
| writes random bytes in the [0,0xff]-interval to memory
|
|
uint32_t | random_uint32_range (uint32_t a, uint32_t b) |
| generates a random number r with a <= r < b.
|
|
double | random_real (void) |
| generates a random number on [0,1)-real-interval
|
|
double | random_real_inclusive (void) |
| generates a random number on [0,1]-real-interval
|
|
double | random_real_exclusive (void) |
| generates a random number on (0,1)-real-interval
|
|
double | random_res53 (void) |
| generates a random number on [0,1) with 53-bit resolution
|
|
◆ PRNG_FLOAT
Enables support for floating point random number generation.
Definition at line 57 of file random.h.
◆ RANDOM_SEED_DEFAULT
#define RANDOM_SEED_DEFAULT (1) |
Seed selected when all tries to collect seeds from a random source failed.
Definition at line 50 of file random.h.
◆ random_init()
void random_init |
( |
uint32_t |
s | ) |
|
initializes PRNG with a seed
Users only need to call this if the auto_init_random
module is disabled, or provides insufficient quality entropy.
- Warning
- Currently, the random module uses a global state => multiple calls to random_init will reset the existing state of the PRNG.
- Parameters
-
◆ random_init_by_array()
void random_init_by_array |
( |
uint32_t |
init_key[], |
|
|
int |
key_length |
|
) |
| |
initialize by an array with array-length init_key is the array for initializing keys key_length is its length slight change for C++, 2004/2/26
- Parameters
-
init_key | array of keys (seeds) to initialize the PRNG |
key_length | number of elements in init_key |
◆ random_real()
double random_real |
( |
void |
| ) |
|
generates a random number on [0,1)-real-interval
- Returns
- a random number on [0,1)-real-interval
◆ random_real_exclusive()
double random_real_exclusive |
( |
void |
| ) |
|
generates a random number on (0,1)-real-interval
- Returns
- a random number on (0,1)-real-interval
◆ random_real_inclusive()
double random_real_inclusive |
( |
void |
| ) |
|
generates a random number on [0,1]-real-interval
- Returns
- a random number on [0,1]-real-interval
◆ random_res53()
double random_res53 |
( |
void |
| ) |
|
generates a random number on [0,1) with 53-bit resolution
- Returns
- a random number on [0,1) with 53-bit resolution
◆ random_uint32()
uint32_t random_uint32 |
( |
void |
| ) |
|
generates a random number on [0,0xffffffff]-interval
- Returns
- a random number on [0,0xffffffff]-interval
◆ random_uint32_range()
uint32_t random_uint32_range |
( |
uint32_t |
a, |
|
|
uint32_t |
b |
|
) |
| |
generates a random number r with a <= r < b.
- Parameters
-
[in] | a | minimum for random number |
[in] | b | upper bound for random number |
- Precondition
- a < b
- Returns
- a random number on [a,b)-interval