23#define BJ_RAND_MAX 0x7FFF
186#if defined(BJ_API_LONG_DOUBLE)
187 #define bj_uniform_real_distribution bj_uniform_long_double_distribution
188#elif defined(BJ_API_FLOAT64)
189 #define bj_uniform_real_distribution bj_uniform_double_distribution
191 #define bj_uniform_real_distribution bj_uniform_float_distribution
219 float standard_deviation
234 double standard_deviation
249 long double standard_deviation
261#if defined(BJ_API_LONG_DOUBLE)
262 #define bj_normal_real_distribution bj_normal_long_double_distribution
263#elif defined(BJ_API_FLOAT64)
264 #define bj_normal_real_distribution bj_normal_double_distribution
266 #define bj_normal_real_distribution bj_normal_float_distribution
General-purpose definitions for Banjo API.
float bj_real
Selected real type for float configuration.
Definition math.h:51
uint64_t inc
Stream selector; odd recommended, 0 allowed.
Definition random.h:48
uint64_t state
Current internal state (updated each step).
Definition random.h:47
int32_t bj_uniform_int32_distribution(bj_random_u32_fn_t next, void *state, int32_t low, int32_t high)
Uniform 32-bit integer in [low, high].
uint32_t bj_min_pcg32(void)
Smallest possible value returned by the generator.
double bj_uniform_double_distribution(bj_random_u32_fn_t next, void *state, double low, double high)
Uniform double in [low, high).
double bj_normal_double_distribution(bj_random_u32_fn_t next, void *state, double mean, double standard_deviation)
Normal double N(mean, standard_deviation^2).
long double bj_uniform_long_double_distribution(bj_random_u32_fn_t next, void *state, long double low, long double high)
Uniform long double in [low, high).
static uint32_t bj_pcg32_generator(void *state)
Adapter for distribution API (void* state).
Definition random.h:105
int bj_bernoulli_distribution(bj_random_u32_fn_t next, void *state, bj_real probability)
Bernoulli(probability).
float bj_uniform_float_distribution(bj_random_u32_fn_t next, void *state, float low, float high)
Uniform float in [low, high).
struct bj_pcg32_t bj_pcg32
Alias for bj_pcg32_t.
Definition random.h:51
uint32_t bj_next_pcg32(bj_pcg32 *generator)
Advance the generator and return the next 32-bit value.
void bj_discard_pcg32(bj_pcg32 *generator, uint64_t z)
Advance the generator state by z steps.
uint32_t bj_max_pcg32(void)
Largest possible value returned by the generator.
float bj_normal_float_distribution(bj_random_u32_fn_t next, void *state, float mean, float standard_deviation)
Normal float N(mean, standard_deviation^2).
void bj_srand(unsigned int seed)
Seed the standard PRNG.
void bj_seed_pcg32(bj_pcg32 *generator, uint64_t seed, uint64_t seq)
Set the generator state from seed and sequence.
int bj_rand(void)
Generate a pseudo-random integer in [0, BJ_RAND_MAX].
long double bj_normal_long_double_distribution(bj_random_u32_fn_t next, void *state, long double mean, long double standard_deviation)
Normal long double N(mean, standard_deviation^2).
uint32_t(* bj_random_u32_fn_t)(void *state)
RNG callback type for generator-agnostic distributions.
Definition random.h:115
PCG32 generator state.
Definition random.h:46
C99 math shim with bj_real precision type and scalar utilities.