Выбор рандомного победителя из массива JS с разным процентом победы
Имеется многомерный массив. В котором содержаться пользователи. Так же в этот массив заношу процент их победы, он зависит от ставки, процент сам я уже просчитываю. Пример массива:
users.push([1, 60]);
users.push([2, 40]);
В массиве 1-ое число - это ID пользователя. Второй процент его победы.
Пользователей может быть неограниченное количество, при каждом новом пользователе процент пересчитывается и через определенное время, пользователи больше не могут начинать игру.
В этот момент нужно просчитать кто победил.
Никак не могу придумать, как по итогу выбирать пользователя.
Может кто-нибудь подобное делал, буду очень признателен.
Ответы (1 шт):
Используйте метод рулетки, применяемый в генетических алгоритмах.
Выбирайте случайное число от 0 до суммы по процентам (пусть будет 100%). Начинайте перебирать элементы массива с начала суммируя итоговый процент пока не получите значение, превышающее ранее полученное случайное число. Цикл остановится на победителе.
Пример, пусть вероятности 4-х игроков: 10%, 40%, 30%, 20%.
Случайное число 55%.
1-й элемент - 10 (10);
2-й элемент - 50 (10+40);
3-й элемент - 80 (50+30) - победитель.