Files
Iris/iris_c/random.c
2026-02-13 13:12:01 +01:00

25 lines
466 B
C

#include "random.h"
static uint32_t state = 1;
void set_random_seed(uint32_t seed) {
state = seed ? seed : 1;
}
uint32_t random_u32(void) {
state ^= state << 13;
state ^= state >> 17;
state ^= state << 5;
return state;
}
uint32_t random_range(uint32_t max) {
if (max == 0) return 0;
uint32_t threshold = (0xFFFFFFFFU / max) * max;
uint32_t r;
do {
r = random_u32();
} while (r >= threshold);
return r % max;
}