У меня есть массив вероятностей элементов, скажем [0,1, 0,2, 0,5, 0,2]
. Сумма массива до 1.0.
Используя простой Python или numpy, я хочу рисовать элементы пропорционально их вероятности: первый элемент примерно в 10% случаев, второй 20%, третий 50% и т. Д. «Draw» должен возвращать индекс нарисованного элемента.
Я придумал следующее:
def draw(probs):
cumsum = numpy.cumsum(probs / sum(probs)) # sum up to 1.0, just in case
return len(numpy.where(numpy.random.rand() >= cumsum)[0])
Это работает, но слишком запутано, должен быть способ получше. Спасибо.