[概率]m个球扔到n个盒子

本文探讨了将m个独立扔入n个盒子的问题,通过编程和数学分析两种方法求解平均有几个盒子含有球。利用递推公式,得出当m较大时,平均空盒子数趋于n/e的结论。
摘要由CSDN通过智能技术生成

问题描述

有m个球,要扔到n个盒子里。其中每个球都是互相独立地扔。问最后平均有几个盒子是有球的?

问题解析

这类问题是较为纯粹的数学问题,当然也可以用计算机精确地求出答案。

方案一:编程解决
  • p(m, i):表示前 m 个球,扔到 n 个盒子里,共占用了 i 个盒子的概率
    于是 p(m, i) = p(m-1, i) * (i/n) + p(m-1, i-1) * (n-i+1)/n
    p(m, i) = 0, if i <= 0 || i > m || i > n

于是可以就可以根据上述式子编程解决,复杂度是 O(m^2)

方案二:数学分析
  • p(m): 表示前 m 个球放到 n 个盒子里,其平均占用的盒子数量 (注意:这里是期望数量)
    p(m) = (p(m-1)/n) * p(m-1) + (1 - (p(m-1)/n ) * (p(m-1) + 1)
    上述式子的意义在于,当求 p(m) 时,可以认为第 m 个球恰好落在前 m-1 个球所在的某个盒子中,概率为 p(m-1) / n;或者是第 m 个球落在一个空的盒子中,概率是 1-p(m-1)/n

化简得到: p(m) = 1 + (n-1)/n * p(m-1).
进一步: p(m) - n = (n-1)/n * ( p(m-1) - n)
进一步: p(m) - n = ( (n-1)/n ) ^ m * (-n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值