Selección aleatoria ponderada con y sin reemplazo

Recientemente necesitaba hacer una selección aleatoria ponderada de elementos de una lista, con y sin reemplazo. Si bien existen algoritmos bien conocidos y buenos para la selección no ponderada, y algunos para la selección ponderada sin reemplazo (como las modificaciones del algoritmo de reenvío), no pude encontrar ningún buen algoritmo para la selección ponderada con reemplazo. También quería evitar el método de reenvío, ya que estaba seleccionando una fracción significativa de la lista, que es lo suficientemente pequeña como para guardarla en la memoria.

¿Alguien tiene alguna sugerencia sobre el mejor enfoque en esta situación? Tengo mis propias soluciones, pero espero encontrar algo más eficiente, más simple o ambos.

Respuestas a la pregunta(6)

Su respuesta a la pregunta