Python 程序根据给定条件从指示随机变量计算函数
pythonserver side programmingprogramming更新于 2025/12/19 5:00:17
假设我们有两个值 k 和 n。考虑前 n 个自然数 1、2、...、n 的随机排列 p1、p2、...、pn,并计算值 F,使得 F = (X2+...+Xn-1)k,其中 Xi 是指示随机变量,当以下两个条件之一成立时为 1:pi-1 < pi > pi+1 或 pi-1 > pi < pi+1,否则 Xi 为 0。我们必须找到 F 的期望值。
因此,如果输入为 k = 1 n = 1000,则输出将为 1996/3
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 exp_factor() 。这将需要 n,k
- 如果 k 与 1 相同,则
- 返回(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 相同时,则
- 返回 (2800*n^4 - 15680*n^3 + 28844*n^2 - 19288*n + 4263, 14175)
- 否则,当 k 与 5 相同时,则
- 返回 (12320*n^5 - 73920*n^4 + 130328*n^3 - 29568*n^2 - 64150*n -5124, 93555)
- 返回 1.0
- 从 main 方法中,执行以下操作 −
- M := n-2
- p := 2.0/3
- q := 1 - p
- (num, den) := exp_factor(n, k)
- g := gcd(num, den)
- return 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

