设$X_0=1$,$X_1$服从$[0, X_0]$的均匀分布,$X_2$服从$[0, X_1]$的均匀分布,如此类推,$X_i$服从$[0, X_{i-1}]$的均匀分布。那么给定常数$a$,满足$X_n \lt a \lt X_{n-1}$,请问$n$的期望是多少?
2个回答
1. 从$x_1$到$x_2$
$x_1$概率密度函数pdf $f_{x_1}=1$
条件pdf $f_{x_2|x_1}=\frac{1}{x_1}$
联合pdf $f_{x_2,x_1}=\frac{1}{x_1}*1=\frac{1}{x_1}$
$x_2$ pdf $f_{x_2}=\int_{x_2}^{1}\frac{1}{x_1}dx_1=-ln(x_2)$
2. 从$x_2$到$x_3$
条件pdf $f_{x_3|x_2}=\frac{1}{x_2}$
联合pdf $f_{x_3,x_2}=\frac{1}{x_2}*-ln(x_2)$
$x_3$ pdf $f_{x_3}=\int_{x_3}^{1}\frac{1}{x_2}*-ln(x_2)dx_2=\frac{ln^2(x_3)}{2}$
同理可得$f_{x_4,x_3}=\frac{ln^2(x_3)}{2x_3}$
推理得$f_{x_{n+1},x_n}=\frac{ln^{n-1}(1/x_{n})}{(n-1)!x_{n}}$
只有满足条件$x_{n+1}<a<x_{n}$时才考虑$n$,此时的概率是联合pdf在$0<x_{n+1}<a$和$a<x_n<1$上的积分
$\int_0^a\int_a^1f_{x_{n+1},x_n}dx_ndx_{n+1}$
根据均值定义
$\sum_{n=1}^{\inf}n*\int_0^a\int_a^1f_{x_{n+1},x_n}dx_ndx_{n+1}+1$
$=\sum_{n=1}^{\inf}\int_0^a\int_a^1\frac{nln^{n-1}(1/x_{n})}{(n-1)!x_{n}}dx_ndx_{n+1}+1$
$=\sum_{n=1}^{\inf}\frac{naln^n(1/a)}{n!}+1$
最后一步化简暂时没做出,用实验验证应该没错。
import numpy as np
import matplotlib.pyplot as plt
def GetN(a):
result = 1
n=10000
for i in range(n):
t=0
x = np.random.uniform(0., 1.)
while a < x:
x=np.random.uniform(0., x)
t+=1
result += (t*1. / n)
return result
def GetN_my(a):
result=1.
n=20
ln_a=np.log(1/a)
for i in range(1,n):
temp=i*a*np.power(ln_a,i)/np.math.factorial(i)
result+=temp
return result
a = np.linspace(0.02, 0.98, 40)
expN = [GetN(i) for i in a]
expN_my = [GetN_my(i) for i in a]
plt.plot(a,expN,'-o',label='Sim')
plt.plot(a,expN_my,'-*',label='My')
plt.legend()
plt.show()
没有什么思路,只能解一个简单的情况,假如$X$不是随机的,是固定的在每个区间的中间,$X_1=2^{-1}, X_2=2^{-2}, X_n=2^{-n}$,那么对于给定的$a$,$n$的值也是可以确定的,等于
$$\lfloor 1-\log_2^a\rfloor$$
但问题就是这里的$X$都是随机的,所以我就只能用代码试试了
def GetN(a):
result = 0
for i in range(100000):
x = [1]
while a < x[-1]:
x.append(np.random.uniform(0, x[-1]))
result += ((len(x) - 1) / 100000)
return result
a = np.linspace(0.02, 0.98, 49)
expN = [GetN(i) for i in a]
下图横轴是$a$,纵轴是$n$。蓝色的线是模拟的结果,绿色是按照固定X计算的结果。感觉差不了太多。