Как проще всего сделать взвешенный случайный выбор в JS?

Я пытаюсь создать программу, которая будет выбирать случайный элемент из массива и хочу, чтобы разные элементы имели разную вероятность выбора. Как лучше всего это сделать?

var char = ["a","b","c"];
var weights = ["0.2","0.3","0.5";
function randomSelection(){
     var randomchoice = ??;
     return randomchoice
}

Спасибо!


person Jack Gordon    schedule 14.08.2020    source источник
comment
Для этой проблемы есть подходящая библиотека - npmjs.com/package/discrete-sampling. Просто счастливый пользователь...   -  person Severin Pappadeux    schedule 14.08.2020


Ответы (1)


Лучший способ зависит от того, для чего вы используете случайный выбор. Несколько алгоритмов взвешенного случайного выбора описаны здесь. Любое из них может быть реализовано в javascript, но первое описанное, линейное сканирование, является самым простым.

person iowf    schedule 14.08.2020