Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

일부 문자와 k 크기 조합에서 문자 'a'를 얻을 확률을 찾는 Python 프로그램

<시간/>

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
  • 포함/총계 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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