有n个盒子,每个盒子里面有一个披萨,现在进行m次放回的等概率拿取,若某一次拿到的盒子里有披萨就拿走披萨,但是空盒子仍然放回,问最后拿到披萨数目的期望数
由于正向考虑需要计算放回 ,故反向考虑 。
对于每个盒子而言,m次操作不被选中的概率是 (1 - 1/ n ) ^ m ,对于每个盒子而言,m次操作被选中的概率就是 1 - (1 - 1/n )^m 。由期望的线性递推公式
E = n * (1 - (1 - 1/n )^m ) 。
故可以O1 解决
int main() { double n, m; scanf("%lf%lf", &n, &m); double p = 1 - pow((n - 1) / n, m); printf("%.10f", n * p); }