Функция randomIndexGenerator
принимает массив arr
с весами. Вес — это неотрицательное число.
Ваша задача вернуть случайный индекс (целое число от 0
до arr.length - 1
). При этом вероятность возвращения определенного индекса должна быть пропорциональна его весу.
Разберем несколько примеров.
const weights1 = [2, 5, 3]; const getIndex1 = randomIndexGenerator(weights1); console.log(getIndex1());
У индекса 0 — вес 2, у индекса 1 — вес 5, у индекса 2 — вес 3. Общий вес составляет 10. Таким образом в 2 случаях из 10 должно вернуться число 0, в 3 случаях из 10 — число 2 и в 5 случаях из 10 — число 1.
const weights2 = [7.5, 3.75]; const getIndex2 = randomIndexGenerator(weights2); console.log(getIndex2());
Веса не обязаны быть только целыми числами. В этом примере вес индекса 0 в два раза больше веса индекса 1. Соотвественно, в 1 случае из 3 будет возвращаться число 1 и в 2 случаях из 3 должно возвращаться число 0.