# libsst-random Pseudorandom number generation and simplex noise in C. ## PRNG algorithms | Type | Enum | State size | |---|---|---| | Mersenne Twister | `SST_PRNG_MERSENNE` | 624 x 32-bit | | CMWC | `SST_PRNG_CMWC` | 4096 x 32-bit | | SmallPRNG | `SST_PRNG_SMALLPRNG` | 4 x 32-bit | ### Generic API ```c SST_PRNG rng = SST_Random_CreatePRNGFromSeed(SST_PRNG_MERSENNE, 42); float f = SST_Random_GetPRNGFloat(rng, 0.0f, 1.0f); int i = SST_Random_GetPRNGInt(rng, 0, 100); SST_Random_DestroyPRNG(rng); ``` Each algorithm also has direct-access functions (`SST_Random_*SmallPRNG*`, `SST_Random_*CMWC*`). Array-fill variants are provided for batch generation. ## Simplex noise 1D through 4D simplex noise, returning values in [-1, 1]: - `SST_Random_MapSimplexNoise{1,2,3,4}D()` - Array variants: `SST_Random_MapSimplexNoise{1,2,3,4}DFromArray()` ## C++ wrappers - `ZRandomGenerator` -- RAII wrapper with Gaussian distribution support - `ZSimplexNoise` -- RAII wrapper with `noise1`/`noise2`/`noise3`/`noise4`