Tengo una matriz de probabilidades de elementos, digamos [0.1, 0.2, 0.5, 0.2]
. La matriz resume hasta 1.0.dibujar elemento aleatorio en numpy
Usando Python simple o numpy, quiero dibujar elementos proporcionales a su probabilidad: el primer elemento alrededor del 10% del tiempo, el segundo 20%, el tercero 50% etc. El "draw" debería devolver el índice del elemento dibujado .
me ocurrió esto:
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])
Funciona, pero es demasiado complicado, tiene que haber una mejor manera. Gracias.