n개의 다른 영어 문자가 있는 배열이 있다고 가정합니다. 또 다른 값 k가 있습니다. 균일한 분포로 k개의 다른 인덱스(1-인덱스)를 선택할 수 있습니다. 선택된 k개의 인덱스 중 적어도 하나가 문자 'a'를 포함할 확률을 찾아야 합니다.
따라서 입력이 문자 =['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k =2인 경우 출력은 64.28%입니다. (1, 2), (1, 3)과 같은 조합이 28개 있는 것처럼 보이지만 (1,2), (1,3), (6,7)과 같은 일부 조합은 18개의 쌍이 7을 유지하므로 18/28 =0.6428.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 포함:=0
- 총계:=0
- k개의 요소가 있는 문자의 각 조합 c에 대해 do
- c에 "a"가 있으면
- 포함 :=포함 + 1
- 총계 :=총계 + 1
- c에 "a"가 있으면
- 포함/총계 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from itertools import combinations def solve(letters, k): contain = 0 total = 0 for c in combinations(letters, k): if "a" in c: contain += 1 total += 1 return contain/total letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k = 2 print(solve(letters, k))
입력
['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2
출력
0