男孩女孩问题 生日悖论 三门问题

article/2025/8/27 23:49:28

上篇文章 洗牌算法详解 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。

计算概率有下面两个最简单的原则:

原则一、计算概率一定要有一个参照系,称作「样本空间」,即随机事件可能出现的所有结果。事件 A 发生的概率 = A 包含的样本点 / 样本空间的样本总数。

原则二、计算概率一定要明白,概率是一个连续的整体,不可以把连续的概率分割开,也就是所谓的条件概率。

上述两个原则高中就学过,但是我们还是很容易犯错,而且犯错的流程也有异曲同工之妙:

先是忽略了原则二,错误地计算了样本空间,然后通过原则一算出了错误的答案。

下面介绍几个简单却具有迷惑性的问题,分别是男孩女孩问题、生日悖论、三门问题。当然,三门问题可能是大家最耳熟的,所以就多说一些有趣的思考。

一、男孩女孩问题

假设有一个家庭,有两个孩子,现在告诉你其中有一个男孩,请问另一个也是男孩的概率是多少?

很多人,包括我在内,不假思索地回答:1/2 啊,因为另一个孩子要么是男孩,要么是女孩,而且概率相等呀。但是实际上,答案是 1/3。

上述思想为什么错误呢?因为没有正确计算样本空间,导致原则一计算错误。有两个孩子,那么样本空间为 4,即哥哥妹妹,哥哥弟弟,姐姐妹妹,姐姐弟弟这四种情况。已知有一个男孩,那么排除姐姐妹妹这种情况,所以样本空间变成 3。另一个孩子也是男孩只有哥哥弟弟这 1 种情况,所以概率为 1/3。

为什么计算样本空间会出错呢?因为我们忽略了条件概率,即混淆了下面两个问题:

这个家庭只有一个孩子,这个孩子是男孩的概率是多少?

这个家庭有两个孩子,其中一个是男孩,另一个孩子是男孩的概率是多少?

根据原则二,概率问题是连续的,不可以把上述两个问题混淆。第二个问题需要用条件概率,即求一个孩子是男孩的条件下,另一个也是男孩的概率。运用条件概率的公式也很好算,就不多说了。

通过这个问题,读者应该理解两个概率计算原则的关系了,最具有迷惑性的就是条件概率的忽视。为了不要被迷惑,最简单的办法就是把所有可能结果穷举出来。

最后,对于此问题我见过一个很奇葩的质疑:如果这两个孩子是双胞胎,不存在年龄上的差异怎么办?

我竟然觉得有那么一丝道理!但其实,我们只是通过年龄差异来表示两个孩子的独立性,也就是说即便两个孩子同性,也有两种可能。所以不要用双胞胎抬杠了。

二、生日悖论

生日悖论是由这样一个问题引出的:一个屋子里需要有多少人,才能使得存在至少两个人生日是同一天的概率达到 50%?

答案是 23 个人,也就是说房子里如果有 23 个人,那么就有 50% 的概率会存在两个人生日相同。这个结论看起来不可思议,所以被称为悖论。按照直觉,要得到 50% 的概率,起码得有 183 个人吧,因为一年有 365 天呀?其实不是的,觉得这个结论不可思议主要有两个思维误区:

第一个误区是误解「存在」这个词的含义。

读者可能认为,如果 23 个人中出现相同生日的概率就能达到 50%,是不是意味着:

假设现在屋子里坐着 22 个人,然后我走进去,那么有 50% 的概率我可以找到一个人和我生日相同。但这怎么可能呢?

并不是的,你这种想法是以自我为中心,而题目的概率是在描述整体。也就是说「存在」的含义是指 23 人中的任意两个人,涉及排列组合,大概率和你没啥关系。

如果你非要计算存在和自己生日相同的人的概率是多少,可以这样计算:

1 - P(22 个人都和我的生日不同) = 1 -(364/365)^22 = 0.06

这样计算得到的结果是不是看起来合理多了?生日悖论计算对象的不是某一个人,而是一个整体,其中包含了所有人的排列组合,它们的概率之和当然会大得多。

第二个误区是认为概率是线性变化的。

读者可能认为,如果 23 个人中出现相同生日的概率就能达到 50%,是不是意味着 46 个人的概率就能达到 100%?

不是的,就像中奖率 50% 的游戏,你玩两次的中奖率就是 100% 吗?显然不是,你玩两次的中奖率是 75%:

$P(两次能中奖) = P(第一次就中了) + P(第一次没中但第二次中了) = 1/2 + 1/2*1/2 = 75\%$

那么换到生日悖论也是一个道理,概率不是简单叠加,而要考虑一个连续的过程,所以这个结论并没有什么不合常理之处。

那为什么只要 23 个人出现相同生日的概率就能大于 50% 了呢?我们先计算 23 个人生日都唯一(不重复)的概率。只有 1 个人的时候,生日唯一的概率是 $365/365$,2 个人时,生日唯一的概率是 $365/365 × 364/365$,以此类推可知 23 人的生日都唯一的概率:

算出来大约是 0.493,所以存在相同生日的概率就是 0.507,差不多就是 50% 了。实际上,按照这个算法,当人数达到 70 时,存在两个人生日相同的概率就上升到了 99.9%,基本可以认为是 100% 了。所以从概率上说,一个几十人的小团体中存在生日相同的人真没啥稀奇的。

三、三门问题

这个游戏很经典了:游戏参与者面对三扇门,其中两扇门后面是山羊,一扇门后面是跑车。参与者只要随便选一扇门,门后面的东西就归他(跑车的价值当然更大)。但是主持人决定帮一下参与者:在他选择之后,先不急着打开这扇门,而是由主持人打开剩下两扇门中的一扇,展示其中的山羊(主持人知道每扇门后面是什么),然后给参与者一次换门的机会,此时参与者应该换门还是不换门呢?

为了防止第一次看到这个问题的读者迷惑,再具体描述一下这个问题:

你是游戏参与者,现在有门 1,2,3,假设你随机选择了门 1,然后主持人打开了门 3 告诉你那后面是山羊。现在,你是坚持你最初的选择门 1,还是选择换成门 2 呢?

答案是应该换门,换门之后抽到跑车的概率是 2/3,不换的话是 1/3。又一次反直觉,感觉换不换的中奖概率应该都一样啊,因为最后肯定就剩两个门,一个是羊,一个是跑车,这是事实,所以不管选哪个的概率不都是 1/2 吗?

类似前面说的男孩女孩问题,最简单稳妥的方法就是把所有可能结果穷举出来:

 

很容易看到选择换门中奖的概率是 2/3,不换的话是 1/3。

关于这个问题还有更简单的方法:主持人开门实际上在「浓缩」概率。一开始你选择到跑车的概率当然是 1/3,剩下两个门中包含跑车的概率当然是 2/3,这没啥可说的。但是主持人帮你排除了一个含有山羊的门,相当于把那 2/3 的概率浓缩到了剩下的这一扇门上。那么,你说你是抱着原来那扇 1/3 的门,还是换成那扇经过「浓缩」的 2/3 概率的门呢?

再直观一点,假设你三选一,剩下 2 扇门,再给你加入 98 扇装山羊的门,把这 100 扇门随机打乱,问你换不换?肯定不换对吧,这明摆着把概率稀释了,肯定抱着原来的那扇门是最可能中跑车的。再假设,初始有 100 扇门,你选了一扇,然后主持人在剩下 99 扇门中帮你排除 98 个山羊,问你换不换一扇门?肯定换对吧,你手上那扇门是 1%,另一扇门是 99%,或者也可以这样理解,不换只是选择了 1 扇门,换门相当于选择了 99 扇门,这样结果很明显了吧?

以上思想,也许有的读者都思考过,下面我们思考这样一个问题:假设你在决定是否换门的时候,小明破门而入,要求帮你做出选择。他完全不知道之前发生的事,他只知道面前有两扇门,一扇是跑车一扇是山羊,那么他抽中跑车的概率是多大?

当然是 1/2,这也是很多人做错三门问题的根本原因。类似生日悖论,人们总是容易以自我为中心,通过这个小明的视角来计算是否换门,这显然会进入误区。

就好比有两个箱子,一号箱子有 4 个黑球 2 个红球,二号箱子有 2 个黑球 4 个红球,随便选一个箱子,随便摸一个球,问你摸出红球的概率。

对于不知情的小明,他会随机选择一个箱子,随机摸球,摸到红球的概率是:1/2 × 2/6 + 1/2 × 4/6 = 1/2

对于知情的你,你知道在二号箱子摸球概率大,所以只在二号箱摸,摸到红球的概率是:0 × 2/6 + 1 × 4/6 = 2/3

三门问题是有指导意义的。比如你蒙选择题,先蒙了 A,后来灵机一动排除了 B 和 C,请问你是否要把 A 换成 D?答案是,换!

也许读者会问,如果只排除了一个答案,比如说 B,那么我是否应该把 A 换成 C 或者 D 呢?答案是,换!

因为按照刚才「浓缩」概率这个思想,只要进行了排除,都是在进行「浓缩」,均摊下来肯定比你一开始蒙的那个答案概率 1/4 高。比如刚才的例子,C 和 D 的正确概率都是 3/8,而你开始蒙的 A 只有 1/4。

当然,运用此策略蒙题的前提是你真的抓瞎,真的随机乱选答案,这样概率才能作为最后的杀手锏。

_____________

公众号:labuladong

B站:labuladong

知乎:labuladong

From https://labuladong.github.io/ebook/%E7%AE%97%E6%B3%95%E6%80%9D%E7%BB%B4%E7%B3%BB%E5%88%97/%E5%87%A0%E4%B8%AA%E5%8F%8D%E7%9B%B4%E8%A7%89%E7%9A%84%E6%A6%82%E7%8E%87%E9%97%AE%E9%A2%98.html

 


http://chatgpt.dhexx.cn/article/MgfHCtX5.shtml

相关文章

生日悖论问题

生日悖论是指,如果一个房间裡有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑…

生日悖论MATLAB仿真

生日悖论MATLAB仿真 终于熬过了这学期!不知不觉大学的3/8已经过去了。回顾以下本学期让我印象最深刻,也最有成就感的事情是写出了我人生中第一个MATLAB程序!由于先前零基础,所以从idea到code实现的整个过程是非常坎坷的QAQ那么话…

生日悖论 Birthday Paradox 至少有两人同一天生日概率

首先我们来看下生日悖论: 假设有n个人,365天的时间,假设所有人生日不相同的概率为(1-P) 第一个人可选择365 天中的任意365天,人数为1时所有人生日不相同的概率为365/365; 第二个人可选择365天…

【密码学/密码分析】生日悖论及生日攻击

生日悖论及生日攻击 鸽巢原理:给定n个鸽巢,至少存在n1只鸽子,那总是会发生碰撞。 概率环境:我们需要多少个物体(鸽子)使得发生碰撞的概率大于1/2? 答案是n1/2,而不是n/2。 举个例…

生日悖论的泛化问题的讨论

著名的生日悖论,不多言。 见维基百科: http://zh.wikipedia.org/wiki/%E7%94%9F%E6%97%A5%E6%82%96%E8%AE%BA 见百度百科: http://baike.baidu.com/view/859474.htm 摆渡、喂鸡,排名不分先后。 维基里面提到了泛化推广。生日…

关于生日悖论问题的验证

昨天在网上看到一个非常有意思的问题: 数学老师和体育老师打赌,数据老师认为在他们有50个人的班级里有两个生日是同一天的同学的概率远超没有的概率,反之是体育老师的观点。 第一次看到的时候我觉得这特数学老师才是教体育的吧, 我…

python生日悖论分析_生日悖论

python生日悖论分析 If you have a group of people in a room, how many do you need to for it to be more likely than not, that two or more will have the same birthday? 如果您在一个房间里有一群人,那么您需要多少个才能使两个或两个以上的人有相同的生日…

Birthday Paradox(生日悖论)(概率)

Birthday Paradox(生日悖论)(概率) judge:LightOJ - 1104 vjudge:vjudge Time limit:2000 ms Memory limit:32768 kB OS:Linux Source:Problem Setter: Jane…

用python整个活(3)——生日悖论:birthday paradox

🏆一、前言 别问我为啥题目是英文,因为…高大上(bushi。 刷视频的时候偶然刷到了一个关于生日悖论的,当场就觉得不可思议,直到上网查了查…… 诶,怎么是真的? 这玩意儿居然还被设置到了密码…

【算法导论】生日悖论

生日悖论问题: 不考虑出生年份,问:一个房间中至少多少人,才能使其中两个人生日相同的概率达到50%? 解: 假设一年有 n 天,屋子中有 k 人,用整数 1, 2, …, k 对这些人进行编号。假定每个人的生日…

反直觉的「生日悖论」问题

点击蓝色“五分钟学算法”关注我哟 加个“星标”,一起学算法 作者 | labuladong 来源 | labuladong 生日悖论是由这样一个问题引出的:一个屋子里需要有多少人,才能使得存在至少两个人生日是同一天的概率达到 50%? 给你 5 秒钟随便…

浏览器不能展开全部内容/界面(展开更多点击无效果)

win10浏览器不能展开全部界面 1、按下“WinR”组合键,在框中输入“inetcpl.cpl”,点击确定打开“internet 选项”; 2、点击“高级”选卡,点击底部的“重置”按钮; 3、在“重置 Internet Explorer 设置”界面将“删除个人设置”选项勾选&…

CSDN文章自动展开全文无需登录插件(仅限Chrome)!

为什么80%的码农都做不了架构师?>>> 众所周知csdn里所有blog都记录了程序员们多年的技术积累,他们不吝啬技术,免费分享经验,随着资料的丰富,那些踩过的坑,报过的错,全被前人当成树种…

VSCode 代码块/全文 折叠/展开 快捷键

需求 && 操作 常用的两类场景(注意要操作的范围): 要操作光标所在文件中的所有代码块: 折叠所有 CtrlK0展开所有 CtrlKJ 仅仅操作光标所处代码块内的代码: 折叠 CtrlShift[展开 CtrlShift] 更多操作 如果你有更多需求的话&#…

列表页面的展开以及收起

列表页面的展开以及收起 需求想法关键代码结尾 需求 由于公司新需求 ,写一个列表页 ,不上拉加载 ,点击加载更多去加载 还会有收起按钮 。大概效果如下图所示: 想法 1,一开始想的是直接对数组进行切割 。然后每次点…

CSDN自动展开全文的插件

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 1 分钟。 这个插件的名字叫:CsdnAutomaticallyOpen,今天刚撸的,下午有点时间再逛CSDN,每篇都要点击阅读全文,尤其是有的还要关注,受…

iOS使用YYLabel 点击展开和收起全文

看图说话比较清晰,点击红色标记的区域,会展开全文。 相关知识点 YYLabel,truncationTokenNSAttributedString,YYText,YYTextHighlight 我们来看一下YYLabel的属性truncationToken,是一个富文本&#xff0…

java爬取新浪微博带有“展开全文”的完整微博文本

获取新浪微博“展开全文”的完整文本 在个人主页的响应中&#xff0c;这篇微博的表示形式是这样的&#xff1a; <div class\"WB_text W_f14\" node-type\"feed_list_content\" nick-name\"Vista看天下\">\n 【一堂课…

uni-app,一段文字实现展开、收起全文点点点

效果&#xff1a; 思路&#xff1a; 1.根据文本显示的布局中&#xff0c;每行大致能显示的文字个数。&#xff08;实例是大致每行26个文字&#xff09; 2.首先加载页面时&#xff0c;根据文字总长度判断是否超出自定义行数&#xff0c;来处理相应的数据&#xff0c;多余自定义…

CSDN阅读全文自动展开插件,安排上!

TJ平时经常利用一些碎片时间逛逛CSDN&#xff0c;由于是碎片时间&#xff0c;往往都是看到哪是哪&#xff0c;所以也没有登录&#xff0c;于是会碰到一个情况&#xff0c;就是看到一篇文章觉得不错&#xff0c;刚看了两句就让点击展开全文&#xff0c;点击之后还要求登录才行&a…