随机变量学习笔记

Update:

2024.7.9 改正了一些小错误(为什么抄都能抄错啊),完善问题 3 的步骤。

概率密度函数和累积分布函数

对于随机变量 \(X\),用概率密度函数 \(f(x)\) 描述它的取值分布,累积分布函数 \(F(x)\) 为概率密度函数的前缀积分。即:

\[F(x)=P(X \leq x) \]

\[F(x)=\int_{-\infty}^x f(x)dx,f(x)=F'(x) \]

注意 \(f(x) \neq P(X=x)\),因为 \(P(X=x)=0\)

\(a \leq X \leq b\) 时,可以用 \(f(x)\) 来描述 \(X\) 的期望:

\[E(x)=\int_a^bxf(x)dx \]

由于 \(f(x)\) 难以直接计算,通常用 \(F(x)\) 来表示。

假设 \(k \geq 0\),则有:

\[\begin{aligned} \int_0^k xf(x)dx & =\int_0^k \int_0^x f(x) dy dx\\ & =\int_0^k \int_y^k f(x) dx dy\\ & =\int_0^k F(k)-F(y) dy\\ & =kF(k)-\int_0^k F(x) dx\\ \end{aligned} \]

\(0 \leq a \leq b\) 时,有:

\[\int_a^b xf(x)dx=bF(b)-aF(a)-\int_a^b F(x) dx \]

计算时通常都会将整个值域计算到,可以简化为:

\[\int_a^b xf(x)dx=b-\int_a^b F(x) dx=a+\int_a^b (1-F(x)) dx \]

问题 1 (ABC226H Random Kth Max)

  • \(N\) 个随机变量,第 \(i\) 个随机变量在 \([L_i,R_i]\) 间等概率随机取值,求随机变量中第 \(K\) 大的期望。

钦定 \(x\),算 \(P(X \leq x)\)

\(k\)\(\leq x\),等价于恰好有 \(t\)\(\geq x\),其中 \(t < k\)

先对 \(N\) 个区间离散化,对每一段算出累积分布函数的表达式再积分即可。

具体而言,设当前计算区间为 \((l,r)\),第 \(i\) 个随机变量区间对应的生成函数为:

\[F_i(x,y)= \begin{cases} y,L_i \geq r\\ 1,R_i \leq l\\ (x-L_i)+(R_i-x)y,L_i \leq l \wedge R_i \geq r \end{cases} \]

维护一个支持删除的背包即可。

总共修改次数为 \(O(N)\),每次修改复杂度为 \(O(NK)\),故总复杂度为 \(O(N^2K)\)

问题 2 (CF1153F Serval and Bonus Problem)

  • 在长度为 \(l\) 的线段上随机取 \(n\) 个区间,求被至少 \(k\) 个区间覆盖的长度期望。

显然每个位置独立,考虑钦定算位置 \(x\) 被至少 \(k\) 个区间覆盖的概率。

至少不好算,改成恰好。

\[\begin{aligned} Ans & =\int_0^l \dbinom{n}{k} (2 \dfrac{x}{l} \dfrac{l-x}{l})^k (1-2\dfrac{x}{l} \dfrac{l-x}{l})^{n-k} dx\\ & =\dbinom{n}{k} l \int_0^1 [2x (1-x)]^k [1-2x(1-x)]^{n-k} dx\\ \end{aligned} \]

接下来把后面这东西化成 Beta 函数公式的形式,所以 \((1-x)\) 不要拆开。

\(t=2x(1-x)\)

\[\begin{aligned} Ans & =\dbinom{n}{k} l \int_0^1 t^k (1-t)^{n-k} dx\\ & =\dbinom{n}{k} l \int_0^1 \sum\limits_{i=0}^{n-k} \dbinom{n-k}{i} (-1)^it^{i+k} dx\\ & =\dbinom{n}{k} l \int_0^1 \sum\limits_{i=0}^{n-k} \dbinom{n-k}{i} (-1)^i 2^{i+k} x^{i+k}(1-x)^{i+k} dx\\ & =\dbinom{n}{k} l \sum\limits_{i=0}^{n-k} \dbinom{n-k}{i} (-1)^i 2^{i+k} \int_0^1 x^{i+k}(1-x)^{i+k} dx\\ & =\dbinom{n}{k} l \sum\limits_{i=0}^{n-k} \dbinom{n-k}{i} (-1)^i 2^{i+k} \dfrac{(i+k)!^2}{(2i+2k+1)!}\\ \end{aligned} \]

对每个 \(k\) 算出来后求和即可。

可以卷积优化,\(O(n \log n)\)

问题 3 (P6130 随机红包)

  • 在长度为 \(1\) 的线段上随机取 \(n-1\) 个点,求分割出的 \(n\) 段线段中第 \(k\) 短的长度期望。

假设问题是算第 \(k\) 长的线段长度期望。

考虑钦定 \(x \in [0,1]\),算 \(P(X \leq x)\)

\(k\)\(\leq x\),等价于恰好有 \(t\)\(\geq x\),其中 \(t < k\)

\(f_t\) 表示恰有 \(t\)\(\geq x\) 的概率,\(g_t\) 表示钦定 \(t\)\(\geq x\) 的概率。

\[g_t=\dbinom{n}{t}(1-tx)^{n-1} \]

\[g_t=\sum\limits_{i \geq t} \dbinom{i}{t} f_i \]

由二项式反演:

\[f_t=\sum\limits_{i \geq t} (-1)^{i-t} \dbinom{i}{t}g_i \]

得到答案表达式:

\[\begin{aligned} Ans & =1-\int_0^1 \sum\limits_{t=0}^{k-1} \sum\limits_{i=t}^n [ix \leq 1] (-1)^{i-t}\dbinom{i}{t} \dbinom{n}{i} (1-ix)^{n-1} dx\\ & =1-\sum\limits_{t=0}^{k-1} \sum\limits_{i=t}^n [i>0] (-1)^{i-t}\dbinom{i}{t} \dbinom{n}{i} \int_0^{1/i} (1-ix)^{n-1} dx -1\\ & =-\sum\limits_{t=0}^{k-1} \sum\limits_{i=t}^n [i>0] (-1)^{i-t}\dbinom{i}{t} \dbinom{n}{i} \dfrac{1}{ni}\\ & =-\dfrac{1}{n} \sum\limits_{t=0}^{k-1} \sum\limits_{i=t}^n [i>0] (-1)^{i-t}\dbinom{i}{t} \dbinom{n}{i} \dfrac{1}{i}\\ \end{aligned} \]

其中第二步是把 \(i=0\) 的情况单独拿出来。

接下来先把 \(t=0\) 的情况单独拿出来:

\[-\dfrac{1}{n} \sum\limits_{i=1}^n (-1)^{i} \dfrac{1}{i} \dbinom{n}{i} = - \dfrac{1}{n} S_n \]

下面给出三种求法(参考 @ do_while_true 的题解 与 UOJ 群友给出的方法):

组合做法

如果不是 \(\frac{1}{i}\) 而是 \(\frac{1}{i+1}\),就可以直接吸收掉。

既然不能改变 \(\frac{1}{i}\),那能不能把组合数的下指标变成 \(i-1\) 呢?应用上指标求和:

\[\begin{aligned} S_n &= \sum\limits_{i=1}^n (-1)^{i} \sum\limits_{j=0}^{n-1} \dbinom{j}{i-1} \dfrac{1}{i}\\ &= \sum\limits_{i=1}^n (-1)^{i} \sum\limits_{j=0}^{n-1} \dfrac{1}{j+1} \dbinom{j+1}{i}\\ &= \sum\limits_{j=0}^{n-1} \dfrac{1}{j+1} \sum\limits_{i=1}^n (-1)^{i} \dbinom{j+1}{i}\\ &= \sum\limits_{j=0}^{n-1} \dfrac{1}{j+1} (0-1)\\ &= -\sum\limits_{j=1}^{n} \dfrac{1}{j}\\ \end{aligned} \]

代数做法(微积分)

\[\begin{aligned} S_n &= \sum\limits_{i=1}^n (-1)^{i} \dbinom{n}{i} \int_0^1 t^{i-1} dt\\ &= \int_0^1 \dfrac{dt}{t} \sum\limits_{i=1}^n (-1)^{i} \dbinom{n}{i} t^{i}\\ &= \int_0^1 \dfrac{(1-t)^n-1}{t} dt\\ &=-\int_0^1 \dfrac{s^n-1}{1-s} ds,\text{with } s=1-t\\ &=\int_0^1 \sum\limits_{k=0}^{n-1} s^k ds\\ &= -\sum\limits_{k=1}^{n} \dfrac{1}{k}\\ \end{aligned} \]

生成函数做法

\[\begin{aligned} F(x) &= \sum\limits_{k \geq 0} S_k x^k\\ &= \sum\limits_{k \geq 0} \sum\limits_{i=1}^k (-1)^{i} \dfrac{1}{i} \dbinom{k}{i} x^k\\ &= \sum\limits_{i \geq 1} (-1)^{i} \dfrac{1}{i} \sum\limits_{k \geq i} \dbinom{k}{i} x^k\\ &= \sum\limits_{i \geq 1} (-1)^{i} \dfrac{1}{i} \dfrac{x^i}{(1-x)^{i+1}}\\ &= \dfrac{1}{1-x} \sum\limits_{i \geq 1} \dfrac{[-x/(1-x)]^i}{i}\\ &= -\dfrac{1}{1-x} \ln(1+\dfrac{x}{1-x})\\ &= \dfrac{\ln(1-x)}{1-x}\\ &=- \big(\sum\limits_{i \geq 0} x^i \big) \big(\sum\limits_{j \geq 1} \dfrac{x^j}{j} \big) \end{aligned} \]

\[S_n(x)=[x^n]F(x)= -\sum\limits_{j=1}^n \dfrac{1}{j} \]


回到原题。

交换和号可以得到另一个结果,但是这里把 \(\dbinom{i}{t}\) 用释放公式可以得到更简单的结果(感谢 @AThousandMoon 提醒):

\[\begin{aligned} Ans & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \sum\limits_{i=t}^n (-1)^{i-t} \dfrac{1}{i} \dbinom{i}{t} \dbinom{n}{i}-\dfrac{1}{n} S_n\\ & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \sum\limits_{i=t}^n (-1)^{i-t} \dfrac{1}{t} \dbinom{i-1}{t-1} \dbinom{n}{i}+\dfrac{1}{n} \sum\limits_{i=1}^n \dfrac{1}{i}\\ & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \dfrac{1}{t} \sum\limits_{i=t}^n (-1)^{i-t} \dbinom{i-1}{t-1} \dbinom{n}{i}+\dfrac{1}{n} \sum\limits_{i=1}^n \dfrac{1}{i}\\ & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \dfrac{1}{t} \sum\limits_{i=0}^{n-t} (-1)^{i} \dbinom{i+t-1}{t-1} \dbinom{n}{n-i-t}+\dfrac{1}{n} \sum\limits_{i=1}^n \dfrac{1}{i}\\ & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \dfrac{1}{t} \sum\limits_{i=0}^{n-t} ([x^{i}]\dfrac{1}{(1+x)^t}) ([x^{n-i-t}](1+x)^n)+\dfrac{1}{n} \sum\limits_{i=1}^n \dfrac{1}{i}\\ & =-\dfrac{1}{n} \sum\limits_{t=1}^{k-1} \dfrac{1}{t} [x^{n-t}] (1+x)^{n-t}+\dfrac{1}{n} \sum\limits_{i=1}^n \dfrac{1}{i}\\ & =\dfrac{1}{n} (\sum\limits_{i=1}^n \dfrac{1}{i}- \sum\limits_{t=1}^{k-1} \dfrac{1}{t})\\ & =\dfrac{1}{n} \sum\limits_{i=k}^n \dfrac{1}{i} \end{aligned} \]

\(O(n-k)\)。原问题即为 \(O(k)\)

posted @ 2021-12-07 22:11  苹果蓝17  阅读(276)  评论(0编辑  收藏  举报