2017-12-29 28 views
0

私は数字のリストとこれらの数字に対応する確率の他のリストを持っています。確率に基づいて番号リストから番号を選択しようとしています。この目的のために、NumPyライブラリのrandom.choice関数を使用します。 私が知っている限り、random.choice関数は、確率(それはゼロに等しい)に基づいて最初のエントリを選択する必要はありません。しかし、いくつかの反復の後に、それは最初のエントリを選択する。ナンシーランダム選択関数は奇妙な結果をもたらします

>>> import numpy as np 
>>> a = [1, 2, 3, 4, 5] 
>>> p = [0.0, 0.97, 0.97, 0.030000000000000027, 0.030000000000000027] 
>>> np.random.choice(a, 1, p)[0] 
1 

誰でも私を助けることができますか?

答えて

3

あなたはそれを間違って使用しています。 choiceのシグネチャは次のとおりです。

choice(a, size=None, replace=True, p=None) 

したがってキーワード引数でそれを使用します。

>>> a = np.arange(1, 6) 
>>> p = [0, 0.04, 0.9, 0.03, 0.03] 
>>> np.random.choice(a, p=p) 
3 

あなたが実行します。あなたのpは、引数replace、ではない実際にpある意味

np.random.choice(a, 1, p) 

さらに、pの合計は1になる必要があります。

+0

私はそれをチェックしてコードを修正しました。あなたの点をありがとう。 – Hikmat