Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để tìm xác suất nhận được chữ cái 'a' trong một số chữ cái và kết hợp có kích thước k

Giả sử chúng ta có một mảng với n chữ cái tiếng Anh khác nhau. Chúng ta cũng có một giá trị khác k. Chúng ta có thể chọn k chỉ số khác nhau (được lập chỉ mục 1) có phân bố đồng đều. Chúng ta phải tìm xác suất để ít nhất một trong k chỉ số được chọn có chứa chữ cái 'a'.

Vì vậy, nếu đầu vào giống như các chữ cái =['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k =2, thì đầu ra sẽ được 64,28%. Có những kết hợp như (1, 2), (1, 3) giống như có 28 kết hợp nhưng một số trong số chúng như (1,2), (1,3), (6,7) 18 cặp như vậy đang giữ 7, vì vậy 18/28 =0,6428.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • chứa:=0
  • tổng số:=0
  • đối với mỗi tổ hợp c của các chữ cái có k phần tử, hãy thực hiện
    • nếu "a" có trong c, thì
      • chứa:=chứa + 1
    • tổng số:=tổng số + 1
  • trả về chứa / tổng số

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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

Đầu vào

['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2

Đầu ra

0