家里有两个男孩的概率是多大?

这道概率的题目我以前在知乎上看见人讨论过,当时的背景是量子力学中概率问题。最近又在 William Feller 老爷爷的书中看到了这道题目。经典的概率已经很难了,量子力学中的概率就更是违反直觉。但是无论如何,我还是反对很多人故弄玄虚,把本来很清楚的问题搞得越来越糊涂,相比之下,老爷爷的书讲得很清楚。下面讲一讲这道问题和我的理解。

考虑所有有两个孩子的家庭,假定我们已经知道家里至少有一个男孩,那么这个家里有两个男孩的概率是多大?

如果每个孩子是男是女的概率相等,那么两个孩子的家庭一共有以下四种可能的基本情况:

  • 男孩,男孩
  • 男孩,女孩
  • 女孩,男孩
  • 女孩,女孩

这四种基本情况的概率是相等的,都是 0.25,也就是说家里有两个男孩的概率是0.25。现在我们给出了条件:家里至少有一个男孩。这个条件过滤掉了两个女孩这种基本情况,只剩下三种基本情况,因此家里有两个男孩的概率变为\dfrac{1}{3}。用概率论的术语来描述的话,两个孩子都是男孩这个事件(A)的概率是:

(1)   \begin{equation*} P(A) = 0.25 \end{equation*}

家里至少有一个男孩这句话给出了一个条件(Hypothesis,H),这个条件(或者假设)发生的概率是:

(2)   \begin{equation*} P(H) = 0.75 \end{equation*}

题目所问的问题实际上就是一个条件概率:在家里至少有一个男孩这个条件(H)之下,家里有两个男孩的这个事件(A)发生的概率是多少?这个概率可以用条件概率公式表达如下:

(3)   \begin{equation*} P(A|H) = \dfrac{P(AH)}{P(H)} \end{equation*}

顺便说一下,对于条件概率公式,我觉得下面的表达方式更自然一些:

(4)   \begin{equation*} P(AH) = P(H) \cdot P(A|H) \end{equation*}

我个人常常把它读作:事件A和H同时发生的概率,就是事件H发生的概率 乘以 当事件H发生时事件A将会发生的条件概率。这样的表达式也很容易拓展到多个事件的情况,比如下面:

(5)   \begin{equation*} P(ABC) = P(C) \cdot P(B|C) \cdot P(A|BC) \end{equation*}

现在回到我们的条件概率公式 (3)。 P(H) 我们已经知道是 0.75,但是 P(AH) 是多少呢?考虑事件 AH的具体含义,它表示“两个孩子都是男孩”而且“至少有一个男孩”这两个事件的交集(即同时发生)。参考上面枚举所有情况,很明显这种事件在所有四个事件中只发生了一次,因此 P(AH) = 0.25。把这个数据代入上式,我们就可以计算得出在家里至少有一个男孩这个条件(H)之下,家里有两个男孩的这个事件(A)发生的概率是:

(6)   \begin{equation*} P(A|H) = \dfrac{P(AH)}{P(H)} = \dfrac{0.25}{0.75} = \dfrac{1}{3} \end{equation*}

和我们直觉推理的结果一致。

下面有意思的事情来了,前面的问题可以被改写为下面的形式:假定你有一个朋友,你知道她有两个小孩,其中有一个是男孩。你可以猜测她的家里两个孩子都是男孩的概率是\dfrac{1}{3},这个结果正如我们前面分析的一样。下面假定有一天,你在公园散步 ,遇到你的这位朋友带着一位男孩也在散步,而这个男孩正是你这位朋友的小孩。现在我们要问一个新问题,你这位朋友家里两个孩子都是男孩的概率是多少?

这个新问题可以按照下面的简单思路来回答:你没有看见的那个孩子是男是女的概率是相等的,都是0.5,如果那个没有看见的孩子是男孩,你的朋友就有两个男孩,如果那个没有看见的孩子是女孩,你的朋友就有一男一女。所以对于这个新问题,你这位朋友家里两个孩子都是男孩的概率是0.5。

很明显,这个新问题的答案和我们原来问题的答案不一样,一个是0.5,一个是\dfrac{1}{3}。为什么会是这样子呢?会不会是某一个答案搞错了?我们原来已经知道朋友家里有一个男孩,现在我们只是实际看到了这个男孩。难道看一眼这个男孩确认一下我们已经知道的事实就会导致概率的变化吗?

上面的问题确实很令人迷惑,这也突出体现了概率论这门学科的众多违反直觉之处。实际上,这个新问题和我们前面讨论的问题确实是不同的问题,就像著名的 Monty Hall Problem 一样,某些被呈现的事件实际上被Over Represented。

原来的问题可以看做采样基本对象是家庭:在所有有两个孩子的家庭中,我们把至少有一个男孩的家庭抽取出来排成一队,队列中的每一个项目都是一个家庭;现在我们从这个队列中随机抽取一个家庭,那么抽到有两个男孩的家庭的概率是 \dfrac{1}{3}

而新问题采样的基本对象是男孩:对于所有的有两个孩子的家庭,把所有的男孩都排成一队,队列中的每一个项目都是一个男孩;下来我们从队伍中随机抽取一个男孩,问他来自于两个男孩的家庭的概率是多少。这种情况下他来自于有两个男孩的家庭的概率是0.5。这是因为两个男孩的家庭男孩比其他家庭要多,所以在这个队列中抽到来自两个男孩家庭的男孩的概率也要比其他家庭大。不易察觉的是,对于两个女孩的家庭,由于这些家庭根本没有办法参与到这个队列中来,如果我们加上限制条件,参加队列的家庭是那些至少有一个男孩的家庭(Hypothesis, H),那么抽到来自两个男孩家庭的男孩的概率依然是0.5。这个过程参见下面的图片。


现在我们言归正传,那么前面那个朋友家庭有两个男孩的概率到底是0.5 还是\dfrac{1}{3} 呢?对于这个问题,我的回答是概率只能应用于统计,而不能应用于个体,所以这个问题没有意义呀。 🙁

字母表(Alphabet)的长度为m,单词(Word)的长度为n,字母表中的每一个字母都用到的单词有多少?

字母表(Alphabet)的长度为m,单词(Word)的长度为n,字母表中的每一个字母都用到的单词有多少?这个问题又是一个可以通过递归分析来解决的组合数学题目。

我们先假定这样的单词总数是 X(n, m)。当字母表的长度为m,单词的长度为n的时候,所有可能的单词总数是:

(1)   \begin{equation*} m^n \end{equation*}

在上面这么多单词中,只含有一个字母的单词总数是:

(2)   \begin{equation*} m \end{equation*}

只含有两个字母,并且这两个字母都用到了的单词总数是多少呢?首先从m个字母中选取两个字母的组合数目是:

(3)   \begin{equation*} C_{m}^2 \end{equation*}

而这两个字母组成的长度为 n ,而且这两个字母都用到了的单词,按照我们上面的递归定义则是 X(n, 2)。因为每个组合中的字母都不一样,而每个单词用到了所有的字母,所以所有这些组合代表的字母表形成的单词互相既不重复,又涵盖了所有长度为n而且用到了两个不同字母的单词。综上所述,所有两字母而且这两个字母都被用到的单词总数是:

(4)   \begin{equation*} C_{m}^2 \cdot X(n, 2) \end{equation*}

以此类推,所有三个字母而且这三个字母都被用到的单词总数是:

(5)   \begin{equation*} C_{m}^3 \cdot X(n, 3) \end{equation*}

这样可以一直推到 m-1。另外我们注意到在单词表只有一个字母的情况下,用到这个字母的长度为 n 的单词为 1,也就是 X(n, 1) = 1。那么我们把上面讨论过的只含有一个字母的单词总数可以表示为:

(6)   \begin{equation*} m = C_{m}^1 \cdot X(n, 1) \end{equation*}

我们从所有可能的 m^n 的单词中去除掉那些只有一个字母的单词、二个字母而且每个字母都被用到的单词、三个字母而且每个字母都被用到的单词、…、一直到m-1 个字母而且每个字母都被用到的单词,就得到了 m 个字母都被用到的单词,也就是:

(7)   \begin{equation*} \begin{split} X(n, m) &= m^n \\ &- C_{m}^1 \cdot X(n, 1) \\ &- C_{m}^2 \cdot X(n, 2) \\ &- ... \\ &- C_{m}^{m-1} \cdot X(n, m-1) \end{split} \end{equation*}

上面就是 X(n, m) 的一个递归定义,具体的实现在这里

from math import factorial

# combination
def C(n,m):
  return factorial(n) / (factorial(m) * factorial(n-m))


# Cache table for X, see below.
X_cache = {}

# A vocabulary of size 'm', a sample of size 'n' with replacement,
# How many possible results with all the 'm' items in it.
def X(n, m):
  if (n, m) in X_cache:
    return X_cache[(n, m)]

  if m == 1:
    result = 1
  elif n < m:
    result = 0
  else:
    # Start with total.
    result = int(m ** n)

    for i in range(1, m):
      # Pick a sub-vocabulary with 'i' items, calculate how many
      # samples can be made by using all of them, remove it from total. 
      result = result - C(m, i) * X (n, i)

  X_cache[(n, m)] = result
  return result


def CallX(n, m):
  result = X(n, m)
  print(f'n={n}, m={m}: {int(result)}')

CallX(25, 5)
print(f'Total: {5**25}')
print(X(25, 5) / 5**25)

在William Feller 的老爷爷原题中,字母表中有5个字母,单词的长度是25,问所有字母的出现的概率是多大,按照上面的公式计算我们有:

(8)   \begin{equation*} \dfrac{X(25, 5)}{5^{25}} = \dfrac{292402196893290112}{298023223876953125} = 98.1 \% \end{equation*}

而当字母表中有3个字母,单词的长度是3的时候,所有字母都出现的概率则是:

(9)   \begin{equation*} \dfrac{X(3, 3)}{3^3} = \dfrac{6}{27} = 22.2 \% \end{equation*}

看来单词一变长,基本上所有的字母也就都包括了。 🙂

An informal (picture based) proof of De Morgan’s laws

很多组合数学的问题正向考虑比较困难,反向考虑就容易很多。这种时候,Morgan 定律就排上了用场,下面是该定律的形象化的证明和一个具体应用的例子。

假定有两个集合 A 和 B,Morgan 定律把它们的交集通过补集和并集操作表示如下:

(1)   \begin{equation*} A \bigcap B = \sim ((\sim A)  \bigcup (\sim B)) \end{equation*}

这个定律一个形象化的证明如下:

下面是 Morgan 定律具体应用的例子,假定我们有一个 k 位的数字,每一位上可以是0-9这10个数字,那么既有0又有1的数字一共有多少?

所有总共可能的数字是 (World):

(2)   \begin{equation*} 10^k \end{equation*}

其中没有0的数字 (定义为集合 \sim A) :

(3)   \begin{equation*} 9^k \end{equation*}

其中没有1的数字 (定义为集合 \sim B) :

(4)   \begin{equation*} 9^k \end{equation*}

所有有0的数字(定义为集合A):

(5)   \begin{equation*} 10^k - 9^k \end{equation*}

所有有1的数字(定义为集合B):

(6)   \begin{equation*} 10^k - 9^k \end{equation*}

那么根据 Morgan 定律,又有0又有1的数字就是:

(7)   \begin{equation*} A \bigcap B = \sim ((\sim A)  \bigcup (\sim B)) \end{equation*}

我们已经知道 (\sim A) = 9^k , (\sim B) = 9^k ,关键是 (\sim A)  \bigcup (\sim B) 如何计算,可以看出,既没有0也没有1的数字是:

(8)   \begin{equation*} (\sim A)  \bigcap (\sim B) = 8^k \end{equation*}

所以我们有:

(9)   \begin{equation*} (\sim A)  \bigcup (\sim B) = (\sim A) + (\sim B) - (\sim A)  \bigcap (\sim B) = 9^k + 9^k - 8^k \end{equation*}

最后对于又有0又有1的数字就是:

(10)   \begin{equation*} A \bigcap B = \sim ((\sim A)  \bigcup (\sim B)) = 10^k - (9^k + 9^k - 8^k) \end{equation*}

对于 k=2 的情况,又有0又有1的数字只有两个:0110,按照上面的公式算一下:

(11)   \begin{equation*} 10^2 - (9^2 + 9^2 - 8^2) = 2 \end{equation*}

Feller 老爷爷后面的东西还是很靠谱呀。 🙂

组合数学中的采样(Sample)问题 (三):组合分析计算概率的关键是所有基本事件的概率应该相等

组合分析是概率论的基础。特别的,在利用组合分析计算某个事件的概率时,我们需要确保所有基本事件的概率是相等的。这一点在我刚刚开始学习概率组合分析的时候并不明显,现在经过 William Feller 老爷爷的一番教育,终于开窍了。下面试举两例。

扔一个6面的骰子,每一面出现的概率都是 \dfrac{1}{6},而且这些基本事件的概率是相等的。从这个基础出发,我们可以计算很多与掷骰子有关的概率问题。

桥牌中5张红心在两个敌手之间有三种可能的组合:0-5,1-4 和 2-3。虽然 Partition Number With k-Part Constraint  可以告诉我们总共可能的组合有三种,但是这三种结果的概率并不相同,所以在这里组合分析必须依赖 可以区分的对象和可以区分的组 一文中的技术,否则将会误入歧途。

问题一:6个骰子出现至少一个1点和12个骰子出现至少两个1点,哪个概率大?

六个骰子的所有可能的结果是 6^6 种,1点从不出现的所有可能的结果是5^6 ,所以至少出现一个1点的概率是:

(1)   \begin{equation*} 1 - \dfrac{5^6}{6^6} = 0.6651020233196159 \end{equation*}

十二个骰子的所有可能的结果是 6^{12} 种,1点从不出现的所有可能的结果是5^{12},1点出现一次的概率是 12 \times 5^{11},(第一个因子12 表示从12个骰子中挑出一个,让它的结果是1点,这一共有12种可能。第二个因子 5^{11} 表示剩下的11个骰子每一个都可以从 2、3、4、5、6 这5个数字中任意选择),所以至少出现两个1点的概率是:

(2)   \begin{equation*} 1 - \dfrac{5^{12} + 12 \times 5^{11}}{6^{12}} = 0.6186673737323087 \end{equation*}

6个骰子出现至少一个1点的概率要大一些,虽然直觉告诉我们这两种相等。 🙁

问题二:桥牌中5张红心在两个敌手之间三种可能的组合:0-5,1-4 和 2-3 的概率分别是多大?

正如前面我们所说的,我们把这5张红心当作不同的牌,两个敌手也当作可以区分的对象,那么总共可能的分配是:0-5, 1-4, 2-3, 3-2, 4-1, 5-0 这么六种,0-5 和5-0 分配的总共可能方案是:

(3)   \begin{equation*} \dfrac{5!}{0!5!} + \dfrac{5!}{5!0!} = 2 \end{equation*}

类似的,1-4 和 4-1 分配的总共可能方案是:

(4)   \begin{equation*} \dfrac{5!}{1!4!} + \dfrac{5!}{4!1!}  = 10 \end{equation*}

而 2-3 和 3-2 分配的总共可能方案是:

(5)   \begin{equation*} \dfrac{5!}{2!3!} + \dfrac{5!}{3!2!} = 20 \end{equation*}

总共可能的方案是:

(6)   \begin{equation*} 2 + 10 + 20 = 32 = 2^5 \end{equation*}

所以这三种情况的概率分别是:

  • 0-5:\frac{1}{16} = 6.25\%
  • 1-4:\frac{5}{16} = 31.25\%
  • 2-3:\frac{5}{8} = 62.5\%

红心 1-4 分配的概率比我想象中要高啊。 🙁

组合数学中的采样(Sample)问题 (二):一个人被选中的概率

很多排列组合的题目都需要一个合适的思路用来描述选择的过程,一旦这个过程确定下来,又容易用基本的排列组合方式去描述,那么解决题目就容易的多了。下面就是一个典型的例子:反向思考要比正向思考容易很多。

假定我们要从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率是多少呢?

上一个帖子中我们已经讲到过基本采样问题的计算方法,这里的问题需要更进一步从反向去思考,如果我们需要的这个排列不包含A的话,那么总共可供挑选的人数就是 n-1,从中选出r人的总共可能的排列就是:

(1)   \begin{equation*} P_{n-1}^{r} \end{equation*}

而从 n 个中选出 r 个人编为一个排列的总共可能性是:

(2)   \begin{equation*} P_{n}^{r} \end{equation*}

所以从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率是:

(3)   \begin{equation*} \dfrac{P_{n-1}^{r}}{P_{n}^{r}} \end{equation*}

那么相应的,从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率就是1减去上面的概率:

(4)   \begin{equation*} 1 - \dfrac{P_{n-1}^{r}}{P_{n}^{r}} = \dfrac{r}{n} \end{equation*}

如果正向去思考,过程要麻烦一些,可以参考下面的思路:假定我们第一个人就选取A,然后剩下的r-1个人从剩下的n-1个人中选取,总共可能的排列是:

(5)   \begin{equation*} P_{n-1}^{r-1} \end{equation*}

同理,如果我们第二个人选取A,然后剩下的r-1个人从剩下的n-1个人中选取,总共可能的排列也是 P_{n-1}^{r-1}。考虑到我们一共需要选取 r 个人,所以总共包含A 的可能的排列就是:

(6)   \begin{equation*} P_{n-1}^{r-1} \cdot r \end{equation*}

那么相应的,从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率是:

(7)   \begin{equation*} \dfrac{P_{n-1}^{r-1} \cdot r}{P_{n}^{r}} = \dfrac{r}{n} \end{equation*}

上面的过程是针对选择对象不能重复(No replacement)的情况,所以正向和反向的分析复杂程度差不太多,如果是对象可以重复(With Replacement),反向分析的思路还是差不多:

n 个人中选取 r 个人的总共排列是:

(8)   \begin{equation*} n^r \end{equation*}

如果排除某个固定的人 A,从剩下的 n-1 个人中选取 r 个人的总共排列是:

(9)   \begin{equation*} (n-1)^r \end{equation*}

所以从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率是:

(10)   \begin{equation*} 1 - \dfrac{(n-1)^r}{n^r} \end{equation*}

但是如果我们从正向考虑,第一个人就选取A,然后剩下的r-1个人从n个人中随便选取(注意因为每个元素可以选取多次,所以这里是 n 而不是 n-1),总共可能的排列是:

(11)   \begin{equation*} n ^ {r -1 } \end{equation*}

那么以同样的方式考虑第二个、第三个一直到第 r 个人,我们会得出所有包含 A 的排列总数是:

(12)   \begin{equation*} n ^ {r -1 } \cdot r \end{equation*}

这样我们就会得出结论:从 n 个中选出 r 个人编为一个排列,这个排列中包含某个固定的人A 的概率是:

(13)   \begin{equation*} \dfrac{n ^ {r -1 } \cdot r}{n^r} = \dfrac{r}{n} \end{equation*}

反向思考得出的 10 和 正向思考得出的 13 很明显不同。那么哪个是正确的呢?在这里反向思考的结果 10 依然是正确的,而正向思考过高的估计了概率,因为第一个人固定为 A, 然后剩下的人随便选 和 第二个人固定为 A,然后剩下的人随便选,选出来的排列有可能完全相同,我们必须把这些完全相同的排列去掉才能正确的计算排列的总数。

组合数学中的采样(Sample)问题 (一):基本概念和两种形式

前面的一系列帖子介绍了组合数学中的分配问题。另一个组合数学的基本模型是采样模型,很多排列组合问题都可以从这个模型开始思考。

采样问题有两种基本形式,第一种是可以重复采样的,比如所有长度为10个字母的英文单词,可以看做该单词的每个字母都从26个英文字母中挑选一个,这样的挑选重复10次。很明显,所有可能的单词总数是:

(1)   \begin{equation*} 26^{10} \end{equation*}

第二种是不能重复采样的,比如假定我们有 n 个人,需要从其中挑出 r 个样本。很明显第一个人有 n 种选择,第二个人就只有 n-1 中选择了。所有可能的样本总数是:

(2)   \begin{equation*} n \times (n-1) \times (n-2) \times ... \times (n-r+1) = P_n^r \end{equation*}

今天很开心,对于工作中纠结了快三个月的模型终于有了深刻的认识

更新现在这个模型已经快三个月了,现在终于有了深刻的认识:

  • 训练数据的问题想要通过模型来修正,那是很困难的,如果能够消除这些不正确的数据,那么一切都会顺利很多。消除的办法可以是简单的 Rule 过滤,也可以是加上权重。
  • 把多Label 标注的问题转化成为一个简单的 Binary Classifier 掩盖了很多实际的问题,但是通过检查模型在每一个 Label 上的表现,可以更好地发现到底是哪里的训练数据有问题。

最后吐槽一下,互联网上的图片,女人的衣服占得比例实在是太多啦!

组合数学中的分配问题(五):桥牌发牌

最近迷上了和孩子们打桥牌,顺便看到 William Feller 的书,提到桥牌四家牌的总共可能的分布一共接近 {10}^{30},鉴于这个老爷爷在他的书中一开始就犯了一个简单的错误,这类数字我也是不敢盲目相信了,还是自己验算一下吧。

桥牌的52张牌都是不同的,四个玩家东南西北也是不同的,所以这是一个可以区分的对象分配到可以区分的组中的问题,不过这个问题和我们在 组合数学中的分配问题(一):可以区分的对象和组 中讨论的有所不同,每一家拿到的牌的数量是一样的,都是13张。 对于这类问题有一个简单的思路: 从52张牌中挑选13张牌发到第一家的所有可能组合是:

(1)   \begin{equation*} \begin{split} &{52 \choose 13} \\ &= \frac{52 \times 51 \times 50 \times ... \times 42 \times 41 \times 40}{13 \times 12 \times 11 \times ... \times 3 \times 2 \times 1} \\ &= \frac{52 \times 51 \times 50 \times ... \times 42 \times 41 \times 40}{13!} \end{split} \end{equation*}

然后从剩下的39张牌中继续挑出13张牌发给第二家的所有可能组合是:

(2)   \begin{equation*} \begin{split} &{39 \choose 13} \\ &= \frac{39 \times 38 \times 37 \times ... \times 29 \times 28 \times 27}{13 \times 12 \times 11 \times ... \times 3 \times 2 \times 1} \\ &= \frac{39 \times 38 \times 37 \times ... \times 29 \times 28 \times 27}{13!} \end{split} \end{equation*}

综合起来,发给这两家牌的总共可能方案是:

(3)   \begin{equation*} \frac{52 \times 51 \times 50 \times ... \times 29 \times 28 \times 27}{13! \times 13!} \end{equation*}

以此类推下去,发给四家牌的所有总共可能方案是:

(4)   \begin{equation*} \begin{split} &\frac{52!}{13! \times 13! \times 13! \times 13!} \\ &= 53,644,737,765,488,792,839,237,440,000 \\ &\approx 5.3 \times 10^{28}  \\ &\approx 10^{30} \end{split} \end{equation*}

看来老爷爷这次又搞对了。 🙂

一般来说,把 n 个可以区分的对象分配到 r 个可以区分的组中,其中每个组的数量分别是 m_1 + m_2 + m_3 + ... + m_r = n ,总共的分配方案一共是:

(5)   \begin{equation*} \dfrac{n!}{m_1! \times m_2! \times m_3! \times ... \times m_r!} \end{equation*}

顺便提一下,从 n 个可以区分的对象中取出 m 的对象的组合数公式是上面公式的特例。想象我们需要把这n个对象分为两组,一组是 m个,另外一组是n-m个,那么按照上面的公式,我们有:

(6)   \begin{equation*} \dfrac{n!}{m!  \times (n-m)!} \end{equation*}

这刚好和组合数公式一模一样。

顺便再深入一下,在所有这 {10}^{30} 的可能分布中,每一家都有一个 Ace 的可能性是多大呢?

把4个Ace 发到四家手中,而且保证每人有一个的方案总共是:

(7)   \begin{equation*} \dfrac{4!}{1! \times 1! \times 1! \times 1!} = 4! \end{equation*}

把剩下的48张牌发到四家手中,而且保证每人有12张的方案总共是:

(8)   \begin{equation*} \dfrac{48!}{12! \times 12! \times 12! \times 12!} \end{equation*}

所以每一家都有一个 Ace 的可能性就是上面的方案总数除以所有的方案总数,即:

(9)   \begin{equation*} \dfrac{\dfrac{48!}{12! \times 12! \times 12! \times 12!} \times 4!}{\dfrac{52!}{13! \times 13! \times 13! \times 13!}} \approx 0.105 \end{equation*}

看来均贫富的概率只有十分之一啊。:-(

An Introduction to Probability – Theory and its Applications 学习笔记 (二):组合数学是概率论的基础

自己在看了这本概率论教材之后才认识到原来组合数学是概率论的基础,难怪这本书一开始就花了好几章来讲组合数学,下面讲讲书中的两个基本的例子。

一、如果把 r 个球放到 n 个盒子中,一共有多少种分配方法?

这个问题本身很简单,我在 组合数学中的分配问题(一):可以区分的对象和组 中有过详细的介绍,答案就是 n^r。搞笑的是,作者在这个问题上却犯了个错:假定有 4 个球 放到 3 个 盒子里,总共的分配方法应该是 3^4 = 81 种,书中却搞成了 4 ^ 3 = 64 种,让人大惊失色,难道这么经典的教材还会在这个简单的问题上犯错吗?那书里教的东西大家还信得过吗? 🙁  详细讨论参见 Math Exchange的这个帖子

二、随机采样100个人,按照是否抽烟和男女性别两个属性把这100个人分为4组:

  • 男性抽烟
  • 男性不抽烟
  • 女性抽烟
  • 女性不抽烟

总共可能的分组数目是多少呢?

这个问题也是分配问题的一种,具体来讲,分成的每个组是可以区分的,比如(20, 20, 20, 40)和(20, 20, 40, 20) 是两种不同的分组方式。但是分配对象本身是不可区分的,我们只关心每个组中有多少人,所以它属于 组合数学中的分配问题(二):不能区分的对象和可以区分的组 中介绍的那类问题。因为每一组的人数都有可能为0,所以总共的分组方案是:

(1)   \begin{equation*} {(100 + 4 - 1) \choose 3} = {103 \choose 3} = 176,851 \end{equation*}

这次 William Feller 老先生在书中终于把答案搞对了。 🙂

An Introduction to Probability – Theory and its Applications 学习笔记 (一):基本概念

下面是书中的几个基本概念:

  • Experiment:  Throw a dice; Sample 100 people from all populations of USA; Assign 4 balls into 3 cells; Throw  5 dices at the same time; etc.
  • Event: The result of an experiment, this really depends on the way you want to measure. For example, suppose the experiment is to throw a dice:
    1.  The dice gives 5, this is an event.
    2. The dice gives a number larger than 4, this is also an event.
  • Simple Event:  For the event like “The dice gives a number larger than 4”, it could be that the dice gives 5 or the dice give 6. In this sense, “The dice gives 5” is a simple event, but “The dice gives a number larger than 4” is a compound event. A compound event is an aggregation of certain simple events.
  • Sample Space: To define an experiment without ambiguity, we must agree on all the possible simple events. In this strict term, one simple event is also called a sample point, the aggregation of all the simple events is call sample space.