Python程式查詢某些字母和大小為k的組合中獲得字母'a'的機率


假設我們有一個包含n個不同英文字母的陣列。我們還有一個值k。我們可以以均勻分佈選擇k個不同的索引(從1開始)。我們必須找到至少一個選定的k個索引包含字母'a'的機率。

因此,如果輸入類似於letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k = 2,則輸出將為64.28%。組合例如(1, 2), (1, 3),共有28種組合,但其中一些例如(1,2), (1,3), (6,7)等18對包含'a',所以18/28 = 0.6428。

為了解決這個問題,我們將遵循以下步驟:

  • contain := 0
  • total := 0
  • 對於letters中每個包含k個元素的組合c,執行以下操作:
    • 如果c中存在"a",則:
      • contain := contain + 1
    • total := total + 1
  • 返回 contain/total

示例

讓我們看看以下實現以獲得更好的理解:

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

更新於: 2021年10月12日

388 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.