2017-01-15 13:34:51 +08:00
|
|
|
// *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
|
|
|
|
// Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
|
|
|
|
|
|
|
|
#ifndef RANDOM_H
|
|
|
|
#define RANDOM_H
|
|
|
|
|
2018-09-12 00:13:45 +08:00
|
|
|
#include "core/typedefs.h"
|
2017-01-15 13:34:51 +08:00
|
|
|
|
|
|
|
#define PCG_DEFAULT_INC_64 1442695040888963407ULL
|
|
|
|
|
|
|
|
typedef struct { uint64_t state; uint64_t inc; } pcg32_random_t;
|
|
|
|
uint32_t pcg32_random_r(pcg32_random_t* rng);
|
2019-03-18 01:51:51 +08:00
|
|
|
void pcg32_srandom_r(pcg32_random_t* rng, uint64_t initstate, uint64_t initseq);
|
2020-10-29 20:40:53 +08:00
|
|
|
uint32_t pcg32_boundedrand_r(pcg32_random_t* rng, uint32_t bound);
|
2017-01-15 13:34:51 +08:00
|
|
|
|
|
|
|
#endif // RANDOM_H
|