2017-12-29 64 views
0

나는 숫자 목록과이 숫자에 해당하는 확률 목록이 있습니다. 확률에 따라 숫자 목록에서 숫자를 선택하려고합니다. 이를 위해 NumPy 라이브러리의 random.choice 함수를 사용합니다. 내가 아는 한 random.choice 함수는 확률 (0과 같습니다)에 따라 첫 번째 항목을 선택하지 않아도됩니다. 그러나 여러 번 반복하면 첫 번째 항목이 선택됩니다.Numpy 임의 선택 함수는 이상한 결과를 제공합니다.

>>> 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 

당신은 할 수 :

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

p가 인수 replace, 실제로 p 의미 그 .

또한 p의 합계는 1이어야합니다.

+0

방금 ​​확인하고 코드를 수정했습니다. 귀하의 요점에 감사드립니다. – Hikmat