python random.choices 질문 한 번 더 하려고 합니다.
조회수 721회
random.choices(리스트, 확률, 누적확률, 뽑을 개수) 로 사용하는 건 알고 있습니다. 현재 누적확률은 필요없는 상태구요.
원래 choices 함수의 목적은 리스트 안에 뽑힐 확률이 높은 값이 더 자주 뽑히도록 하는 거 잖아요? 근데 저는 제일 확률이 높은 값이 제일 덜 뽑히고 확률이 가장 낮은 값이 제일 잘 뽑히도록 하고 싶습니다. weights의 값을 반대로 넣어주면 되겠지만, 현재 weights의 값이 실행 시마다 랜덤으로 바뀌기 때문에 값을 미리 정해줄 수는 없는 상태입니다.
꼭 choices 함수가 아니더라도 목적만 시행되면 상관 없습니다.
방법이 없을까요 ㅜㅜ ?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
실행시마다 weights 값이 "랜덤"으로 바뀌면 안 되죠.
작은값의 weight 가 더 크도록 해야 하죠.
랜덤으로 뽑힌값이 [ 1, 2, 3, 4, 5 ] 라고 합시다. (20개 뽑는다고 했는데, 그냥 5개만 뽑는다고 합시다.)
1이 가장 큰 확률로 뽑히도록 하고 싶다는 거잖아요.
[ w(1), w(2), w(3), w(4), w(5) ] 라는 weights 를 만드는데, w(1) 이 가장 크게 하면 되는 거고요.
w 함수를 어떻게 정하느냐는 질문 주신분 마음이죠.
def w(n) : return 1/n
이라고 하면, weights 는 [ 1/1, 1/2, 1/3, 1/4, 1/5 ] 가 되는 거구요.def w(n): return 1000 - 1
가 weights 가 되는 거구요. [ 999, 998, 997, 996, 995 ]OK?
댓글 입력