neptune/kern/libkern/badrand.h

43 lines
1 KiB
C

#ifndef BADRAND_H
#define BADRAND_H
#include <stdint.h>
/*
* 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