В вопросе, с которым вы связаны, решение Кайла будет работать с тривиальным обобщением.
Сканирование списка и суммирование общего веса. Тогда вероятность выбора элемента должна быть:
1 - (1 - (# необходимо / (вес остался))) / (вес при n). После посещения узла вычтите его вес из общего количества. Кроме того, если вам нужно n и у вас осталось n, вы должны явно остановиться.
Вы можете проверить, что со всем, имеющим вес 1, это упрощает решение Кайла.
Отредактировано: (пришлось переосмыслить, что означает в два раза больше вероятности)