@technobuddha/library
Version:
A large library of useful functions
25 lines • 1.47 kB
JavaScript
/**
* Draw a random item from a list. Returning both the item and the list without the drawn item.
* @param list - Array of items to pick from
* @param random - Random number generator
* @returns Randomly selected item & the list without the drawn item
* @group Random
* @category Pick
* @example
* ```typescript
* const items = ['a', 'b', 'c'];
* randomDraw(items, () => 0.5); // deterministic for example
* // { draw: 'b', list: ['a', 'c'] }
* ```
*/
export function randomDraw(list, random = Math.random) {
if (list.length === 0) {
return undefined;
}
const index = Math.floor(random() * list.length);
return {
draw: list[index],
list: list.toSpliced(index, 1), // Remove the drawn item from the list
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLWRyYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmFuZG9tLWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQWtCLEVBQ2xCLFNBQXVCLElBQUksQ0FBQyxNQUFNO0lBU2xDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxzQ0FBc0M7S0FDdkUsQ0FBQztBQUNKLENBQUMifQ==