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

与えられた条件からのインジケーター確率変数から関数を計算するPythonプログラム


2つの値kとnがあるとします。最初のn個の自然数1、2、...、nのp1、p2、...、pnなどのランダム置換を考え、F =(X2 + ... + Xn-1)kとなるように値Fを計算します。 、ここで、Xiはインジケーター確率変数であり、次の2つの条件のいずれかが当てはまる場合は1です。pi-1 pi+1またはpi-1>pi

したがって、入力がk =1 n =1000のような場合、出力は1996/3になります

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

  • 関数exp_factor()を定義します。これにはn、kがかかります
  • kが1と同じ場合、
    • return(2 *(n-2)、3)
  • それ以外の場合、kが2と同じ場合、
    • リターン(40 * n ^ 2 -144 * n + 131、90)
  • それ以外の場合、kが3と同じ場合、
    • リターン(280 * n ^ 3-1344 * n ^ 2 + 2063 * n -1038,945)
  • それ以外の場合、kが4と同じ場合、
    • return(2800 * n ^ 4-15680 * n ^ 3 + 28844 * n ^ 2-19288 * n + 4263、14175)
  • それ以外の場合、kが5と同じ場合、
    • return(12320 * n ^ 5-73920 * n ^ 4 + 130328 * n ^ 3-29568 * n ^ 2-64150 * n -5124、93555)
  • 1.0を返す
  • メインの方法から、次の手順を実行します-
  • M:=n-2
  • p:=2.0 / 3
  • q:=1-p
  • (num、den):=exp_factor(n、k)
  • g:=gcd(num、den)
  • 小数部(num / g)/(den / g)を返す

理解を深めるために、次の実装を見てみましょう-

from math import gcd

def exp_factor(n,k):
   if k == 1:
      return (2*(n-2),3)
   elif k == 2:
      return (40*n**2 -144*n + 131,90)
   elif k == 3:
      return (280*n**3 - 1344*n**2 +2063*n -1038,945)
   elif k == 4:
      return (2800*n**4 - 15680*n**3 + 28844*n**2 - 19288*n + 4263, 14175)
   elif k == 5:
      return (12320*n**5 - 73920*n**4 + 130328*n**3 - 29568*n**2 - 64150*n -5124, 93555)
   return 1.0

def solve(k, n):
   M = n-2
   p = 2.0/3
   q = 1 - p

   num, den = exp_factor(n,k)
   g = gcd(num, den)
   return str(int(num/g))+'/'+str(int(den/g))

k = 1
n = 1000
print(solve(k, n))

入力

1, 1000

出力

1996/3

  1. n + nm + nmm ....... + n(m回)を計算するPythonプログラム。

    ここで、nには正の数の値が与えられます。mはシリーズが実行されるまでの回数です。私たちの仕事はこのシリーズを計算することです。 アルゴリズム Step 1: Input n, m; Step 2: Converting the number to string. Step 3: Initializing result as number and string. Step 4: Adding remaining terms. Step 5: Concatenating the string making n, nn, nnn... Step 6: Before adding converting

  2. 特定の位置から「k」ビットを抽出するPythonプログラム?

    この関数は、pos位置からkビットを抽出し、抽出された値を返すために使用されます。ここでは、Pythonのスライス手法を使用します。 例 Input:: number=170 K=5 Pos=2 Output=21 アルゴリズム Extractionbit(no,k,pos) /*user input number is stored in variable no, extracted bit is stored in variable k and the position of bit is pos. */ Step 1 : first convert the num