Python程序,用于查找在某些字母和k大小的组合中获取字母“a”的概率

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对保持为7,因此18/28 = 0.6428。

为解决此问题,我们将执行以下步骤-

  • contain := 0
  • total := 0
  • 对于每个具有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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程