Pythonでいくつかの操作を実行して、特定の配列のサブ配列の予想される合計を見つけるプログラム
いくつかの操作を実行して、特定の配列のサブ配列の予想される合計を見つけるプログラム
サイズがnで2つの値がpとqの配列Aがあるとします。これらの操作はAで実行できます。
- l
- l
- l
最初の操作をp回、2番目の操作をq回実行した後、2つのインデックスl&rをランダムに選択します。ここでl
したがって、入力がA =[1,2,3] p =1 q =1の場合、出力は4.667になります。
ステップ1:3つの選択肢があります-
swap(0、1)なので、配列は2 1 3
swap(0、2)なので、配列は3 2 1
swap(1、2)なので、配列は1 3 2
ステップ2:結果ごとに3つの選択肢があります-
[213]から[123]、[3 1 2]、[2 3 1]
[321]から[231]、[1 2 3]、[3 1 2]
[132]から[312]、[2 3 1]、[1 2 3]
可能な配列は9つあるため、確率は1/9です。したがって、9つの配列のそれぞれには、等しい確率で3つの可能な合計があります。たとえば、[1 2 3]の場合、1 + 2、2 + 3、および1 + 2+3を取得できます。そして、この入力には合計27の結果があります。期待値は、すべての27Sの合計を求め、それを27で割ることによって計算できます。
これを解決するには、次の手順に従います-
理解を深めるために、次の実装を見てみましょう-
例
def matmul(a, v, n):
toret = [0]*n
for i in range(n):
for j in range(n):
toret[i] += a[i][j]*v[j]
return toret
def solve(A, p, q):
n = len(A)
temp = []
swp = (n - 3)/(n - 1)
swapvalp = (pow(swp, p)*(n - 1) + 1)/n
swapvalm = (1 - pow(swp, p))/n
rev = []
dotv = []
for i in range(n):
swaprow = []
revrow = []
for j in range(n):
swaprow.append(swapvalm)
revrow.append(2*(min(i, j, n - i - 1, n - j - 1) + 1)/(n*(n - 1)))
swaprow[i] = swapvalp
revrow[i] = 1.0 - 2*((i + 1)*(n - i) - min(i + 1, n - i))/(n*(n - 1))
temp.append(swaprow)
rev.append(revrow)
dotv.append(2*((i + 1)*(n - i) - 1)/(n*(n - 1)))
A = matmul(temp, A, n)
for _ in range(q):
A = matmul(rev, A, n)
tot = 0.0
for i in range(n):
tot += dotv[i]*A[i]
return tot
A = [1,2,3]
p = 1
q = 1
print(solve(A, p, q))
入力
[1,2,3], 1, 1
出力
0.0
-
Pythonプログラムで配列の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n): # using built-in function return(sum(arr)) # main arr = [11,22,33,44,55,66
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '