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
- nếu "a" có trong c, thì
- 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