20 lines
489 B
TypeScript
20 lines
489 B
TypeScript
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)));
|
|
}
|