Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tính xác suất chọn ít nhất một chữ 'a' trong tổ hợp k phần tử


Cho mảng letters chứa n chữ cái và số k. Chọn ngẫu nhiên k chỉ số khác nhau (1-indexed). Tính xác suất rằng ít nhất một trong k chỉ số được chọn chứa chữ 'a'.

Ví dụ: letters = ['a','c','a','b','l','a','b','z'], k = 2 → xác suất ≈ 64.28% (18/28).

Thuật toán

  • Dùng itertools.combinations sinh tất cả tổ hợp k phần tử.
  • Đếm số tổ hợp chứa chữ 'a' (contain) và tổng số tổ hợp (total).
  • Xác suất = contain / total.

Ví dụ mã nguồ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))  # 0.642857...

Đầu vào / Đầu ra

Input:  ['a','c','a','b','l','a','b','z'], 2
Output: 0.6428571428571429