Выбор рандомного победителя из массива JS с разным процентом победы

Имеется многомерный массив. В котором содержаться пользователи. Так же в этот массив заношу процент их победы, он зависит от ставки, процент сам я уже просчитываю. Пример массива:

users.push([1, 60]);
users.push([2, 40]); 

В массиве 1-ое число - это ID пользователя. Второй процент его победы. Пользователей может быть неограниченное количество, при каждом новом пользователе процент пересчитывается и через определенное время, пользователи больше не могут начинать игру. В этот момент нужно просчитать кто победил.
Никак не могу придумать, как по итогу выбирать пользователя. Может кто-нибудь подобное делал, буду очень признателен.


Ответы (1 шт):

Автор решения: cassius

Используйте метод рулетки, применяемый в генетических алгоритмах.

Выбирайте случайное число от 0 до суммы по процентам (пусть будет 100%). Начинайте перебирать элементы массива с начала суммируя итоговый процент пока не получите значение, превышающее ранее полученное случайное число. Цикл остановится на победителе.

Пример, пусть вероятности 4-х игроков: 10%, 40%, 30%, 20%.

Случайное число 55%.

1-й элемент - 10 (10);

2-й элемент - 50 (10+40);

3-й элемент - 80 (50+30) - победитель.

→ Ссылка