Tengo un conjunto de valores, y un porcentaje asociado para cada uno:de selección basado en la ponderación porcentaje
A: 70% de probabilidad
b: 20% de probabilidad
c: 10% de probabilidad
Quiero seleccionar un valor (a, b, c) basado en el porcentaje de posibilidades otorgadas.
¿cómo puedo abordar esto?
mi intento hasta ahora se ve así:
r = random.random()
if r <= .7:
return a
elif r <= .9:
return b
else:
return c
estoy atascado subir con un algoritmo para manejar esto. ¿Cómo debería abordar esto para que pueda manejar conjuntos de valores más grandes sin solo encadenar flujos if-else juntos?
(ninguna explicación o respuesta en pseudo-código son bien una implementación de Python o C# sería especialmente útil.)
he tenido este problema y terminó la construcción de una biblioteca: https://github.com/kinetiq/Ether.WeightedSelector –
aplicación muy agradable y sencillo en C# aquí: http://www.vcskicks.com/random-element.php – Roboblob