题目
一栋楼里面有4台电梯,1000名员工。每台电梯同时能分配到250±10%名员工的概率是多少?(电梯负载无上限,人员选择电梯的概率都是一样的)
首先不考虑10%的范围
穷举:
1.首先先考虑2台电梯,4个人的情况吧
四个人只有三种组合:
(0,4),(1,3)(2,2)
此时概率为了1/3
2.首先先考虑2台电梯,6个人的情况吧
(0,6),(1,5)(2,4), (3,3)
此时的概率为了1/4
3.从以上两个例子可以看出,其实就是求一定数量的人的组合,可以用多少种组合
可以拿4台电梯(4,8个人员穷举一下)
4个人的时候,共有5种, 此时概率为了1/5:
(0,0,0,4),(0,0,1,3),(0,0,2,2),(0,1,1,2),
(1,1,1,1)
8个人的时候,共有12种, 此时概率为了1/12:
(0,0,0,8),(0,0,1,7),(0,0,2,6),(0,0,3,5),(0,0,4,4)
(0,1,1,6),(0,1,2,5),(0,1,3,4)
(1,1,1,5),(1,1,2,4),(1,1,3,3)
(2,2,2,2)
可以看出概率是越来越低的,同时不用区分每个人选择哪个电梯,因为组合是无序的,即(0,0,0,8)与(0,0,8,0)是一样的
同时可以看出,数量达到1000的时候 是不可能 穷举的
编程(穷举)
代码一
|
|
很显示,这个效率不高。
为了尽量减少重复,可以考虑i<=j,j<=k,k<=l
所以4i <= i + j + k + l <= sum <= average * 4,即i<=average
j <= sum / (num-1)
k <= sum / (num-2)
l <= sum / (num-3)
同时i + j + k + l >sum时跳出循环
然后得优化代码
代码二
|
|
运行结果如下,效率提高了不少:
代码3-指定范围的概率
|
|
可以看出,概率约5.1%左右:
人员改为2000的时候的结果如下:
完



