Недавно мне нужно было провести взвешенный случайный выбор элементов из списка, как с заменой, так и без нее. Хотя есть хорошо известные и хорошие алгоритмы для невзвешенного выбора, а некоторые для взвешенного выбора без замены (например, модификации алгоритма resevoir), я не мог найти хороших алгоритмов для взвешенного выбора с заменой. Я также хотел избежать метода resevoir, поскольку я выбирал значительную часть списка, который достаточно мал, чтобы хранить в памяти.
Есть ли у кого-нибудь предложения по наилучшему подходу в этой ситуации? У меня есть свои собственные решения, но я надеюсь найти что-то более эффективное, простое или и то, и другое.