Mam szereg prawdopodobieństw elementów, powiedzmy [0.1, 0.2, 0.5, 0.2]
. Tablica sumuje się do 1,0.losowy element w numpy
Używając zwykłego Pythona lub numpy, chcę narysować elementy proporcjonalne do ich prawdopodobieństwa: pierwszy element około 10% czasu, drugi 20%, trzeci 50% itd. "Rysowanie" powinno zwrócić indeks elementu narysowanego .
wymyśliłem to:
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])
To działa, ale to zbyt zawiłe, że musi być lepszy sposób. Dzięki.