1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { randomIn } from "https://esm.town/v/beneskildsen/randomIn";
export const weightedOneOf = (options, weights) => {
const cumulativeWeights = [];
let sum = 0;
for (let i = 0; i < options.length; i++) {
sum += weights[i];
cumulativeWeights.push(sum);
}
const randomVal = randomIn(0, sum - 1) + 1;
let index = 0;
for (; randomVal > cumulativeWeights[index]; index++);
return options[index];
};
Val Town is a social website to write and deploy JavaScript.
Build APIs and schedule functions from your browser.
Comments
Nobody has commented on this val yet: be the first!
October 23, 2023