@seroh/roll
Version:
An RPG dice-rolling library with a variety of built-in roll mechanics.
25 lines • 977 B
JavaScript
export class Randomizer {
generate(min, max) {
this.validateMinMax(min, max);
return this.scaleToRange(this.generator(), min, max);
}
scaleToRange(rawRoll, min, max) {
if (rawRoll >= 0.99)
return max;
if (rawRoll <= 0)
return min;
return Math.floor(rawRoll * (max - min + 1)) + min;
}
validateMinMax(min, max) {
if (!Number.isInteger(min) || !Number.isInteger(max)) {
throw new Error(`Invalid range: Both minimum (${min}) and maximum (${max}) values must be integers.`);
}
if (min < 1 || max < 1) {
throw new Error(`Invalid range: Both minimum (${min}) and maximum (${max}) values must be positive integers greater than zero.`);
}
if (min > max) {
throw new Error(`Invalid range: The minimum value (${min}) cannot be greater than the maximum value (${max}).`);
}
}
}
//# sourceMappingURL=Randomizer.js.map