一道排列组合概率题

题目:样本抽检通过概率问题

有1000个样本,其中990个合格,10个不合格。抽检规则:从1000个样本中随机抽检100个,如果存在一个或一个以上不合格的样本,则抽检不通过,求抽检通过的概率。

解答

这很显然是一个古典概型问题(数数 (shǔshù) 问题)

我们称一个实验为古典概型,如果

  1. 一个实验的结果只有有限个(假设一共有 n 个);
  2. 每个基本事件发生的可能性相同。为了计算事件 A 的概率,假设 A 中包含 m 个基本事件。则事件 A 发生的概率为

P(A)=AΩ=mnP(A)=\frac{|A|}{|\Omega|}=\frac{m}{n}

因此我们只需要给抽检通过这个事件数数 (shǔshù) 就可以了。

随机抽检100个,其中全部是合格的组合数为:A=(990100)|A| = \binom{990}{100},随机抽检100个,不关心其中是否存在不合格的组合数为:Ω=(1000100)|\Omega|=\binom{1000}{100}。因此:

P(A)=(990100)(1000100)=990!100!890!1000!100!900!=9008998911000999991=0.347P(A)=\frac{\binom{990}{100}}{\binom{1000}{100}}=\frac{\frac{990!}{100!\cdot 890!}}{\frac{1000!}{100!\cdot 900!}}=\frac{900\cdot 899\cdots 891}{1000\cdot 999\cdots 991}=0.347

程序模拟

为了验证我们的计算,用 python 写了个小程序模拟抽检:

1
2
3
4
5
6
7
8
9
failed = 0
repeat = 100000
for i in range(repeat):
list1 = ([0] * 990) + ([1] * 10)
sampled = sample(list1, 100)
if sum(sampled) > 0:
failed += 1

print(1 - failed / repeat)

程序输出:

1
2
0.34502999999999995
[Finished in 10.7s]