нарисовать случайный элемент в NumPy

У меня есть массив вероятностей элементов, скажем,[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])

Это работает, но это слишком запутанно, должен быть лучший способ. Благодарю.

Ответы на вопрос(5)

Ваш ответ на вопрос