snapkitty
machine-learning
c
snapkitty-mlc / include /sk_random.h
SNAPKITTYWEST's picture
Upload folder using huggingface_hub
8b41169 verified
Raw History Blame Contribute Delete
1.43 kB
/* sk_random.h β€” SnapKitty MLC: PCG32 pseudo-random number generator
*
* Algorithm: PCG-XSH-RR (O'Neill 2014). Period 2^64.
* Stateless reentrant API (_r suffix) + global convenience wrappers.
*
* Authors: Ahmad Ali Parr, Jessica L. Williams (SNAPKITTYWEST)
* Source: SNAPKITTYAGENT9NOVA/MLC
* License: BSL-1.1 / AGPL-3.0 / MPL-2.0
*/
#ifndef SK_RANDOM_H
#define SK_RANDOM_H
#include "sk_defs.h"
typedef struct {
u64 state;
u64 inc;
} sk_prng;
/* ── Seeding ──────────────────────────────────────────────────────── */
void sk_prng_seed_r(sk_prng* rng, u64 initstate, u64 initseq);
void sk_prng_seed(u64 initstate, u64 initseq);
/* ── Generation ───────────────────────────────────────────────────── */
u32 sk_prng_rand_r(sk_prng* rng);
u32 sk_prng_rand(void);
f32 sk_prng_randf_r(sk_prng* rng); /* [0, 1) */
f32 sk_prng_randf(void); /* [0, 1) */
/* Compatibility aliases */
#define prng_state sk_prng
#define prng_seed_r sk_prng_seed_r
#define prng_seed sk_prng_seed
#define prng_rand_r sk_prng_rand_r
#define prng_rand sk_prng_rand
#define prng_randf_r sk_prng_randf_r
#define prng_randf sk_prng_randf
#endif /* SK_RANDOM_H */