私は要素の確率の配列を持っています。これは[0.1, 0.2, 0.5, 0.2]
としましょう。配列の最大値は1.0です。numpyでランダムな要素を描画する
平易なPythonまたはnumpyを使用して、確率の比例する要素を描画したい:最初の要素は約10%、2番目は20%、3番目は50%など。描画要素は描画される要素のインデックスを返す。
私はこの思い付いた:
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])
それは動作しますが、それはあまりにも複雑ですが、良い方法がなければなりません。ありがとう。
それがどのように動作する