import type { RandomSource } from './random-source'; /** * Rolls an inclusive integer in [min, max] from one value of `random`. * * `RandomSource.next()` is documented as [0, 1), but the clamp keeps a * misbehaving or hand-stubbed source from ever exceeding `max`. */ export function rollInclusive( random: RandomSource, min: number, max: number, ): number { if (max <= min) { return min; } return Math.min(max, min + Math.floor(random.next() * (max - min + 1))); }