improve weightedRandom()
handling of bad data input
update allowed param types, should only be arrays
This commit is contained in:
parent
52b91cae87
commit
19f6bbaed4
@ -42,18 +42,23 @@ export class WeightedRandomHelper
|
|||||||
* @param {number[]} weights
|
* @param {number[]} weights
|
||||||
* @returns {{item: any, index: number}}
|
* @returns {{item: any, index: number}}
|
||||||
*/
|
*/
|
||||||
public weightedRandom(items: string | any[], weights: string | any[]): { item: any; index: number; }
|
public weightedRandom(items: any[], weights: any[]): { item: any; index: number; }
|
||||||
{
|
{
|
||||||
|
if (!items || items.length === 0)
|
||||||
|
{
|
||||||
|
throw new Error("Items must not be empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!weights || weights.length === 0)
|
||||||
|
{
|
||||||
|
throw new Error("Item weights must not be empty");
|
||||||
|
}
|
||||||
|
|
||||||
if (items.length !== weights.length)
|
if (items.length !== weights.length)
|
||||||
{
|
{
|
||||||
throw new Error("Items and weight inputs must be of the same length");
|
throw new Error("Items and weight inputs must be of the same length");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!items.length)
|
|
||||||
{
|
|
||||||
throw new Error("Items must not be empty");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Preparing the cumulative weights array.
|
// Preparing the cumulative weights array.
|
||||||
// For example:
|
// For example:
|
||||||
// - weights = [1, 4, 3]
|
// - weights = [1, 4, 3]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user