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.combinationssinh tất cả tổ hợpkphầ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