从给定条件计算指示随机变量的Python程序函数

从给定条件计算指示随机变量的Python程序函数

假设有两个值k和n。考虑自然数1、2、…、n的随机排列p1,p2,…,pn,并计算值F,使得F = (X2+…+Xn-1)k,其中Xi是指示随机变量,当以下两个条件之一成立时,Xi为1:pi-1pi+1或pi-1>pi<pi+1,否则Xi为0。我们必须找到F的期望值。

因此,如果输入为k = 1 n = 1000,则输出将为1996/3。

为了解决这个问题,我们将按照以下步骤进行:

  • 定义exp_factor()函数。这将需要n和k。
  • 如果k与1相同,则
    • return(2*(n-2),3)
  • 否则,当k与2相同时,则
    • return(40n^2-144n+131,90)
  • 否则,当k与3相同时,则
    • return(280n^3-1344n^2+2063*n-1038,945)
  • 否则,当k与4相同时,则
    • return(2800n^4-15680n^3+28844n^2-19288n+4263,14175)
  • 否则,当k与5相同时,则
    • return(12320n^5-73920n^4+130328n^3-29568n^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)
  • 返回fraction(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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程