Python
 Computer >> コンピューター >  >> プログラミング >> Python

いくつかの文字とkサイズの組み合わせで文字「a」を取得する確率を見つけるPythonプログラム


n個の異なる英字の配列があるとします。別の値kもあります。一様分布のk個の異なるインデックス(1インデックス)を選択できます。選択したk個のインデックスの少なくとも1つに文字「a」が含まれる確率を見つける必要があります。

したがって、入力が文字=['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。

これを解決するには、次の手順に従います-

  • contains:=0
  • 合計:=0
  • k個の要素を持つ文字のcの組み合わせごとに、
    • 「a」がcに存在する場合、
      • contains:=contains + 1
    • 合計:=合計+ 1
  • return contains / 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

  1. Pythonを使用して最大の確率でパスを見つけるプログラム

    n個のノード(ノードには0から番号が付けられます)を持つ無向加重グラフがあるとします。このグラフは、エッジリストを使用して入力として与えられ、各エッジeについて、そのエッジ確率[e]を通過する成功の確率があります。開始ノードと終了ノードもあります。最初から最後まで成功の確率が最大のパスを見つけて、成功の確率を返す必要があります。パスが見つからない場合は、0を返します。 したがって、入力が次のような場合 ノード0から2へのパスが2つあるため、出力は0.24になります。1つは確率0.2、もう1つはノード1を経由するパスの確率は0.4 * 0.6 =0.24で、これが最大です。 これを解

  2. Pythonでノードと子孫の違いを見つけるプログラム

    二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノ​​ード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: