我有一个元素概率数组,比方说[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])
行得通,但是太复杂了,一定有更好的办法。谢谢。