@randsum/dice
Version:
A flexible, type-safe dice roller for tabletop RPGs, game development, and probability simulations
31 lines (26 loc) • 779 B
text/typescript
import { coreRandom } from './coreRandom'
import { generateNumericalFaces } from './generateNumericalFaces'
/**
* Generates an array of dice roll results
*
* @param quantity - The number of dice to roll
* @param max - The maximum value (number of sides) for each die
* @param faces - Optional array of custom face values
* @returns An array of roll results
*/
export function coreSpreadRolls<F extends string | number>(
quantity: number,
max: number,
faces?: F[]
): F[] {
const facesArr = faces ?? (generateNumericalFaces(max) as F[])
const result = new Array<F>(quantity)
for (let i = 0; i < quantity; i++) {
const randomIndex = coreRandom(max)
const face = facesArr[randomIndex]
if (face) {
result[i] = face
}
}
return result
}