У меня есть список из 100 000 объектов. У каждого элемента списка есть связанный с ним "вес", который является положительным int от 1 до N.
Каков наиболее эффективный способ выбора случайного элемента из списка? Я хочу, чтобы мое распределение случайно выбранных элементов было таким же, как распределение весов в списке.
Например, если у меня есть список L = {1,1,2,5}, я хочу, чтобы 4-й элемент был выбран в среднем 5/9 секунд.
Предположим, что в этом списке распространены вставки и удаления, поэтому любой подход, использующий "таблицы интегральной области", должен часто обновляться - надеясь, что существует решение с O (1) временем выполнения и требуемой дополнительной памятью O (1).