#ifndef BADRAND_H #define BADRAND_H #include /* * This is a PRNG for non-cryptographic use. * * See: * https://en.wikipedia.org/wiki/Linear_congruential_generator */ /** * @brief Sets the seed for the PRNG. * * @param s The specific seed value or zero. If zero is passed, it will call * rand_reseed(). */ void sbadrand(uint64_t s); /** * @brief Generates a pseudo-random 64-bit number. * * Uses a simple Linear Congruential Generator (LCG) to produce * a sequence of pseudo-random numbers. * * @return A pseudo-random 64-bit unsigned integer. */ uint64_t badrand(); /** * @brief Generates a random number within a specified range. * * Produces a random number in the inclusive range [min, max]. * Ensures uniform distribution by applying a modulo operation. * * @param min The lower bound of the range (inclusive). * @param max The upper bound of the range (inclusive). * @return A random number between min and max. */ uint64_t badrand_range(uint64_t min, uint64_t max); #endif // BADRAND_H