文章 | 一个有趣的概率论佯谬
本文首发于知乎。
晚上和同学讨论概率论的时候,发现了一个有趣的佯谬:
可以在 (0, 1) 内等概率选取一个实数,但不能在其中等概率选取一个有理数。
乍一看很反直觉,明明实数比有理数多,为什么选有理数就选不出来呢?
其实答案很简单。关键在于如何理解「等概率」。
省流版
省流版:实数的等概率分布只需要概率密度函数为常数;而有理数是可列集,等概率要求每个点都有相等的确定的概率。
好,文章到此结束。
如果你觉得还没结束,那就继续往后看吧。
有理数的情形
让我们先来看一个更直观的问题:能否等概率地从自然数中选取一个数?
直观来看好像不行。因为自然数有无穷多个,如果等概率选取,那么每个数被选到的概率都是零,这好像不太合理。
为了解决这个问题,先来复习一下概率的公理化定义:
记样本空间为 , 是 上的一个 σ 代数,若存在函数 ,使得
- ;
- ;
- 任给可数个 ,若两两不交,则 。 则称 为 上的一个概率测度。
重点在第三条(可数可加性)。假设存在一个等概率选取的方式,选到每一个数的概率都是 ,那么为了保证 收敛,必须有 。
但同时,根据第二条, ,这个式子左边为 1,右边为 0,矛盾。
事实上,在区间 (0, 1) 内等概率选取一个有理数与之前提到的等概率选取自然数是等价的。有理数也是可列集,但从一个无限可列集合中等概率选取一个元素,意味着需要将每个元素的概率为零的点相加,以获得总体概率为 1,而这对于任何无限可列集合都是不可能实现的。
实数的情形
那么,实数的情形又是怎样呢?
实数与有理数的根本区别在于实数是不可列集。这意味着,虽然存在一系列概率为 0 的点,但它们可以组合成一个概率大于 0 的事件。然而,由于实数集是不可列的,因此这种组合过程不能简单地用加法描述,而需要使用积分。积分的一个重要特征是它可以将零值变成非零值。
这也表明,我们需要重新思考「等概率」的含义。由于几乎所有单点处的概率都为零,因此对于任何一种概率分布,单点的概率相等是一个自然的条件,并不能提供更多信息。
为了简化问题,我们只考虑 Borel 集。在 Borel 集上,「等概率」实际上指的是「平移性」。我们要求长度相同的区间具有相等的概率。例如,下面的条件就给出了很强的平移性要求:
设 是 (0, 1) 上的 Borel 集, 是 上的概率测度。任取 ,要求有 。
这个条件要求,只要区间长度相同,无论长度具体是多少,它们都应该具有相等的概率。符合这个条件的概率分布被认为是「等概率」的。
实际上,「等概率」的定义并不是严格唯一的。在某些情况下,只要满足一些较弱的条件,也可以被称为等概率。
用概率密度函数可以很容易给出一个等概率的分布,只需要令 ,就可以得到 (0, 1) 上的一个等概率分布。
在这种分布下,对于长度为 的区间,始终有 ,概率只与区间长度有关,因此是等概率分布。
课后练习
问题一:既然在区间 (0, 1) 内等概率选取一个实数是可行的,那么在全体实数内等概率选取一个实数是否也可行呢?
问题二:下面是一段尝试等概率选取有理数的程序:
function sample_rational() {
do {
a = sample() // 等概率随机选取 (0,1) 内的一个实数
} while (!is_rational(a)) // 直到生成有理数
return a // 返回等概率选取的有理数
}
这段程序与文章最开始的判断矛盾吗?
这篇文章使用了 AI 辅助创作,文章中的一些语句经过 ChatGPT 的修改和优化。