全文共4594字,预计学习时长9分钟

假如把N个人分成一组,至少有两个人是同一天生日的概率是多少?

现在来猜一猜:假设这一组有N=30个人。那么有两个人在同一天吃生日蛋糕的概率是多少呢?我们换个说法:你敢不敢用10美元赌里面有两个同月同日生的人?

我们会以这个例子收尾,但首先我们需要收集所有的元件(也就是下文标题部分),才能解开生日谜题。

基础中的基础

为了充分“卖弄学问”,我们就略去惹人白眼的引言部分:概率的数值在0和1 之间(如果喜欢的话,你还可以说它在0%到100%之间)。好的。现在你明白为什么“我1000%确定他们会迟到”一类句子会让数据猿急得跳脚。

分析概率的三种方式

人们在分析概率时,常用三种方法:

• 基于事件的概率(包括列举事件,计算事件数量)

• 基于频率的概率(包括用代表事物在平行宇宙中的收束方式的分布)

• 主观概率(包括代表人对于可能发生情况的信念的分布,尤指通过赌注的方式……毕竟不空口说白话可以避免胡说八道)

假如你的统计课老师没有一字一句地强调基础要点,那笔者告诉你,课本将提到以下内容:

基于事件的概率

概率=[分子]/[分母]

前几章会从基于事件的概率分析方法开始。因为通过这种方法人们能很容易地就获取到基本信息,而且或许大部分人(你懂的)已经有这方面的直觉。举个例子:投掷一枚硬币背面朝上的概率是?1/2. 投掷骰子出现6点的概率是多少?1/6.为什么会这样?

分子:所考察的事件可能发生的次数

分母:任何(有关)事件发生的次数

就一枚硬币来说,分母即所有相关事件是正面朝上和背面朝上。这就是分母2的来源。很简单。

细数事件

要想处理基于事件的概率问题,我们首先需要列举出所有的事件并记录事件的数量。这也就是为什么教材很可能会不停地讲如何组合分析,直到你彻底看烦。组合分析能教你掌握计算(针对所求分子和分母的)事件数量的方法。

回顾在作业中出现无数遍的问题,无非是关于:“从100名候选人中选出19名委员有多少种方式?”(17310309456440种)或者是“一组4位数密码共有多少种组合可能?”(1000种)。

在基于事件的世界里,所有的时间群发生的概率相等,因而它们在算法中不受各个层的凌乱的调节器影响。在这个世界里,抛出去的每枚硬币的正反面朝上的概率相当,所有投掷的骰子出现的数字平衡,所有的卡牌都无需重排,所有的人的出生日期的分布均等。

对于生日问题,我们需要快速了解什么是计数:

“AND”要求对(x)计数进行吃乘积。 “OR”要求对(+)计数进行叠加。

你可以去查找证据……或者快速阅读这个例子,满足自己的求知欲:如果有2种素食套餐和3种肉食套餐可供我选择,那么一共有多少种选择呢?答案是2+3=5种可能。假如我确定会选择一个主餐,要从2份甜品之中选择一样,这种情况下会有多少种套餐组合呢?答案是共有5x2=10种。不信吗?你可以找几道菜,把所有组合一一写出来。

随机组合的套餐是素食的概率是多少?

分子= 2x2=4;;分母=10

答案=4/10=40%

超越事件

现在看了三章,但突然教材中有关组合分析的内容全部消失了。当你入门排列组合的时候,它们就销声匿迹了。与此同时,分布变得无处不在。发生了什么?

可以思考如下问题:“你需要至少等待十分钟才能上公交车的概率是多少?”这会是一个很难“数”出来的问题(到底需要多少秒呢?),计数在这里甚至会变得有些棘手,因为你不能用计数的方式分割时间这个连续的介质。更糟的是,有些公交车司机可能会根据公交车的延迟程度,考虑是否停下来抽烟休息。你怎么能列举这种情况?不可能做到的。也许计数在这里根本不适用…..

学习基于频率的概率定义时,将遇到这种说法:“如果上文事件在无限平行宇宙中发生(限定,或者假设这一事件受某些规则制约),有多少公交车会在超过十分钟以后到?”(平行宇宙?!难怪我们数据猿总是眼光清奇)

然后(通常是很久之后),当到达课本贝叶斯数据的主观概率定义章节时,你将可能根据你自己的感受建立分布。看见没有,在你被剥夺列举事件的能力后,剩下的是不是方法是不是很复杂?不过对于生日问题来说,假设所有366个生日出现的概率相同,我们还可以继续数数。

什么,你不喜欢我的假设?想开点吧,所有的统计数据都关乎假设——否则宇宙会陷入一片混乱。如果不喜欢我的假设,觉得我的方案不是你期待的,那就提出一套新的方案来。。我们可以随心所欲提出假设,数据也因此富有创造性。在这里我想不恰当地引用George Box的一句名言:“所有的解决方案都是错误的,但一旦某一个方案符合你一直以来的假设,那它就可能对你有用。”

没有称赞之意

解决生日问题的最后组件是补数,另一方面它也被称为NOT。

P(not A)= 1- P(A)

这个公式读作:“某一事件的概率(由于创造力有限,我们将其称为事件A)不发生的概率等于100%的概率减去该事件发生的概率。”

所以投掷骰子不出现点6的概率是多少呢?

答案是1-1/6=5/6

好的,这就是所有内容。现在准备解决生日问题了!

生日问题

问题是什么来着?

如果一组有N个人,至少出现两个人是同一天生日的概率是多少?

那就来搭建“乐高块”吧…..

生日问题的分母

一个人有多少种生日的可能呢,366种(上文提过)。

所以N=30时会有多少生日数量吗?

第一个人有366种可能,第二个人也有366种,第三个人也是366种……然后第N个人也是366种情况。把这N个366相乘就是结果了!

分母=366^ N,苍天好大一个数! N为30,结果就是一个76位数,比1000后面再跟24组“000” 的数还大(给事物命名不好玩吗?)

生日问题的分子

准备迎接令你晕头转向的部分吧。这里需要记录所有不同的可能,保证至少有两个人是同一天过生日。所以如果第一个人有366中选项,而第29个人有1个选项,因为需要和第一个人相符,但可能是第二个人或者第十七个人,抑或有三个人的生日在同一天,或者……不,试图将所有的可能选项记在脑海里会变得很乱。

……这就是为什么生日问题会成为一项很有趣的工程。在看诀窍之前需要绞尽脑汁(或者到网上跪求解题攻略。你是这样找到这条博文的吗?很好,我懂你了)。

解决生日问题的窍门

与其列举所有的两个以上的人在同一天生日的可能,不如将问题转化为一个更简单的切入角度:寻找问题对立面!

P(至少有两个人是同一天生日)=1-P(所有人都不是同一天生日)

所以我们只需要求以下问题的答案:“没有任何一个人与另一个人是同一天生日的概率是多少?”也就是说,所有人都不是同一天生日的概率是多少?

“所有人都不是同一天生日”的分母

答案仍然是366^ N。通过对问题的补数进行转化,我们将重点放到分子上,让分母保持不变。

“所有人都不是同一天生日”的分子

这就是神奇之处!

第一个人的生日有366种可能(贪婪的家伙)然而第二个人只有365种可能因为我们要求他们的生日不在同一天。如果第一个人的生日在10月8日,我们就把所有在10月8日过生日的人排除在外。这样每个样本中的成员的可能生日数量将越来越少。

所以366是第一个人的可能数量,而365是第一个人的可能数量而364是第三个人的可能数量……而(367-N)是第N个人的可能数量。

如果N 是30,将各个数相乘,见证奇迹!

366 x 365 x 364 x 363 x 362 x 361 x 360 x 359 x 358 x 357 x 356 x 355 x 354 x 353 x 352 x 351 x 350 x 349 x 348 x 347 x 346 x 345 x 344 x 343 x 342 x 341 x 340 x 339 x 338 x 337 = …

啊,又是一个76位数的数字。

但是,幸运的是,计算机会帮我们处理除法问题,如果操作得当的话。

也许这不是我们需要的

P(所有39个人的生日都不在同一天)=(366 x 365 x 364 x 363 x 362 x 361 x 360 x 359 x 358 x 357 x 356 x 355 x 354 x 353 x 352 x 351 x 350 x 349 x 348 x 347 x 346 x 345 x 344 x 343 x 342 x 341 x 340 x 339 x 338 x 337) / (366 ^ 30)

=0.3

最后,就是我们需要的数值!

P(30个人有人是同一天生日) = 1-0.3 =70%

在30个人的组中,有人是同一天的生日的概率是~70%。

我希望你没有赌10美元说,有人的生日在同一天的概率小于每个人的生日都不在同一天的概率……但是如果你真的赌了,我不反对把钱捐给维基百科。

赌错结果很可能是因为你低估了一组数据不重复的难度——如果你是在门口负责拦截所有与室内的人同一天生日的人的保镖,不久之后想进入房内的人就会失望。

这取决于你有多少个朋友……

我可以用两分钟,通过电脑上的R程序得出每一个N的概率。如果你好奇具体数值是什么(N等于23时概率为50%,N等于55时概率为99%),可以来体验我编写的代码串。可能不太好看,但绝对好用。无需下载,就可以在浏览器上运行。

# Initialize settings for N = 1:
probability <- 0
numerator <- 366
denominator <- 366# Loops are terrible in R, let's make one anyways:
for (N in 2:80) {
numerator <- numerator * (366 + 1 - N)
denominator <- denominator * 366
p <- 1 - (numerator / denominator)
probability <- c(probability, p)
}# Look at the answer to 2 decimal places:
paste("For N =", 1:80, "prob is", round(probability, 2))# Plot!
plot(1:80, probability, xlab = "Group Size", ylab = "P(Shared birthdays)", type = "l", col = "red", main = "The Birthday Solution")

我们学到了什么?

除了一些基本概率知识(处理概率问题的不同方法,分子和分母的计算方法),以及计数原则(加法原则和乘法原则)以外,这篇文章的主旨是,为什么需要以特定顺序解决特定问题。

为什么在教材开始,计数是重中之重,而在后续内容中,计数会淡出我们的视野,留下愤愤不平的我们?结果貌似说明每一种方法都对应着一种目的,每一种事件发生的概率相等这一前提对于专业人员来说,过于浅显,无法消化……即使在生日问题上也是如此。当业余人士想象数据分析猿每一天都在干什么的时候,他们首先想到的是数牌和抛硬币,这不是很好玩吗?辟谣跑断腿啊!

生日问题之所以是数据分析入门的经典问题,是因为这个问题上所需的脑力刚刚好:数据分析员需要学习如何转化问题,以使转化后的问题更便于解题。采取简单粗暴的办法将难以计算,因此需要另辟蹊径。如果你选择了数据分析的生活,时刻准备迎接一系列抛掷硬币和转化的问题。

推荐阅读专题

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

编译组:夏伊凡、孙梦琪 
相关链接:
https://towardsdatascience.com/using-the-birthday-paradox-to-teach-probability-fundamentals-c08bbcb351d1
如需转载,请后台留言,遵守转载规范
推荐文章阅读

数据分析入门经典问题:你两个朋友同一天过生日的概率有多大?相关推荐

  1. oracle查询同一天生日的,数据分析经典问题:两个朋友同一天过生日的概率?

    如果把N个人分成几组,那么至少有两个人是同一个人的概率是多少? 现在让我们猜一猜:假设这个组有30个人.两个人在同一天吃生日蛋糕的可能性有多大?换句话说:你敢赌10美元赌两个人在同一个月的同一天出生吗 ...

  2. 老王有两个孩子,已知至少有一个孩子是在星期二出生的男孩。问:两个孩子都是男孩的概率是多大?

    这个问题其实不难,只是很多时候,尤其在没有任何提示的时候,容易想错.条件概率的题目一定要看清楚条件信息. 问题描述:老王有两个孩子,已知至少有一个孩子是在星期二出生的男孩.问:两个孩子都是男孩的概率是 ...

  3. 一家有两个孩子,已知至少有一个孩子是在星期二出生的男孩。问:两个孩子都是男孩的概率是多大?

    这道题想都没想就选了 0.5,第二个孩子是男是女不是一样吗!!! 然而答案是 13/27, 好吧,让我们来昧着初心解释一下: 把这道题必须用贝叶斯公式来做,因为我也无法凭空想出 "周二出生& ...

  4. 菜鸟入门13,认识两个新朋友——PWM和DAC

    文章目录 前言 用STM32F103输出一路PWM波形,建议采用定时器方法.野火和网上大多数资源采用此方法,有完整源码.用示波器观察输出波形. 显示波形 用STM32F103的DAC功能完成以下波形输 ...

  5. 数据分析入门极简书单

    本文授权转载自麻瓜编程 如果你找一个熟悉的朋友给你推荐书单,他会倾向于越短越好,因为他想把他知道的最好的推荐给你,让你少花时间在不重要的事情上. 但如果你在网上看到一个书单,往往会发现都很长长长长长, ...

  6. 数据分析入门学习指南,零基础小白都能轻松看懂

    数据分析在如今的求职场上越来越重要.然而,让很多朋友困惑的是,我是没有编程基础的小白,能学会数据分析么?该如何学习数据分析呢? 其实,如果你打算成为一名数据分析师,如何出身并不重要,数据科学是一门应用 ...

  7. 数据分析入门学习指南|零基础小白必看

    数据分析在如今的求职场上越来越重要.然而,让很多朋友困惑的是,我是没有编程基础的小白,能学会数据分析么?该如何学习数据分析呢? 其实,如果你打算成为一名数据分析师,如何出身并不重要,数据科学是一门应用 ...

  8. 数据分析入门项目之 :Titanic: Machine Learning from Disaster

    1.摘要: 本文详述了新手如何通过数据预览,探索式数据分析,缺失数据填补,删除关联特征以及派生新特征等数据处理方法,完成Kaggle的Titanic幸存预测要求的内容和目标. 2.背景介绍: Tita ...

  9. 计算机应届生必读的 AI 入门经典书单

    图源来自Pexels 有人说,学AI意味着 30k 打头的月薪,有了"科学家"的虚名,赶上了工业革命的时髦. 但也有人说,这是人工智能撒下的弥天大谎,不然那些工业界的大牛学者为啥都 ...

最新文章

  1. JavaScript 初学者必看“箭头函数”
  2. HTTP Content-Disposition Explanation [ from MDN ]
  3. mysql硬盘安装方法_Mysql安装教程
  4. 【华为云技术分享】ARMv8-A存储模型概述(1)
  5. JS——基础知识--变量类型和变量计算
  6. Flutter 使用Dart Format格式化代码
  7. 常见的显卡故障与原因
  8. 如何修改PDF文件内的文字的字体和颜色?
  9. python推箱子游戏代码_推箱子游戏,推箱子游戏代码python实现
  10. cgroup 分析之CPU和内存部分
  11. 还没有表白神器?情人节来喽,快为心爱的她送上一份专属的礼物吧~
  12. 【论文翻译】异构网络的影响与相似性
  13. oracle goldengate 数据库复制配置手册
  14. Ubuntu下噩梦搬的hud-service进程CPU直接爆炸
  15. 有哪些网站,一旦知道,你就离不开了?
  16. 求1到100之间所有能被3整除的整数的和
  17. 基础数论算法(4) 中国剩余定理
  18. ROS中使用Intel RealSense D455或L515深度相机
  19. WebApi路由机制详解
  20. Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台

热门文章

  1. vue获取字符串中字符的的数量_结合Vue控制字符和字节的显示个数的示例
  2. megaface初试
  3. opj 7221 拯救公主
  4. OA 也有天下第一的座椅?
  5. 学习JAVA需要掌握的英文单词
  6. sht20中写用户寄存器_数字输出温湿度传感器HTU21D和SHT21对比评测(图文)
  7. 美国硅基和宽禁带半导体供应链竞争力剖析
  8. 重启计算机设的桌面背景就没了,电脑重启后壁纸消失如何解决
  9. 2021年12月Hbuilder云打包IOS流程
  10. Python数据分析系列之——王一博微博转发量分析1 数据说明2 粉丝结构初步分析3 粉丝画像最后的话