本人概率统计一直软肋,面试面这种题直接就悲剧了。
题目的大意是:一升水,依次倒入三个杯子,倒出的水服从[0, s]均匀分布,s是杯中剩下的水,问,其中有一杯大于0.5升的概率是多少?
我能想到的就是做蒙特卡罗
3个回答
分情况讨论吧
第一种:
第一杯大于0.5升的概率
$$P_1=0.5$$
第二种:
假设第一杯倒出$x$升水,那么第二杯大于0.5升的概率
$$P_2=\int_{0}^{0.5}\frac{1-x-0.5}{1-x}dx$$
第三种:
假设第一杯倒出$x$升水,那么第一杯水和第二杯加起来小于等于0.5升的概率
$$P_3=\int_{0}^{0.5}\frac{0.5-x}{1-x}dx$$
其中有一杯大于0.5升的概率是
$$P_1+P_2+P_3=0.5+\int_{0}^{0.5}\frac{1-2x}{1-x}dx=2x+\log(|x-1|)+0.5$$
最后答案就是
$$1.5+\log(0.5)\approx 0.807$$
面试题都这么变态的吗,正在找工作的我感受到了恐惧。。
想了一晚上没想出个具体的解,但是想出个思路感觉也许可行(计算也比较麻烦),希望能得到指点。
假设事件A、B、C分别表示每杯水的水量,皆服从均匀分布,其中有一杯大于0.5升的相反事件就是三杯水都小于0.5升,于是有:
P(至少一杯水>0.5L) = 1 - P(A<0.5)P(B<0.5|A<0.5)P(C<0.5|A<0.5,B<0.5)
P(A<0.5)就是0.5了,接下来要解P(B<0.5|A<0.5)就要考虑条件分布P(B|A),根据贝叶斯公式有:
$P(B|A) = \frac{P(A|B)P(B)}{P(A)}$
边缘密度p(A)就是1;现求先验分布p(B):已知B服从均匀分布U(0,1-A),这里的超参数A是未知的,但是A的分布我们知道。这里可以采用双层贝叶斯,相当于p(A)作为第二层先验,那第二层的贝叶斯分母部分就是B的边缘概率密度:
$p(B)=\int_{0}^{1-B} 1/(1-A)*1\ dA$
把A积掉以后得到一个关于B的概率函数p(B);然后,易知密度函数p(A|B)=1/(1-B),与p(B)相乘之后得后验密度p(B|A) ,将其对B和A在0到0.5上进行二重积分可以得到P(B<0.5|A<0.5)。
同样的道理P(C<0.5|A<0.5,B<0.5)我想也是可求的。
不过我想你们的面试单位一定有什么奇技淫巧,这种计算这么麻烦显然不是正确答案。抛砖引玉,等一个更好的解。最后祝愿楼主面试顺利通过。
SofaSofa数据科学社区DS面试题库 DS面经