生日悖论问题——《算法导论学习笔记》
1 生日悖论问题
1.1 原始问题
一个房间里的人数必须达到多少,才能使两个人生日相同的机会达到50%?不考虑闰年情况,也就是一年按照365天来计算。
解答:
假设房间里的人数是k,我们对其进行编号:1, 2, … , k。
为简单起见,用n表示一年的天数(也就是365天),那么一个人的生日在一年中的哪一天应该是机会均等的,我们用bi表示第i个人的生日,1<=bi<=n,因此,Pr{bi=r}=1/n,对于i=1,…,k;r=1,...,n成立。
这个问题可以通过求补法来求解:
也就是先计算任意两个人的生日都不相同的概率,然后用1去减,就可以算得相应概率。
K个人各有互不相同生日的事件为
Bk = ∩Ai(i=1,..,k)
其中Ai是指对所有的j<i,i与j生日不同的事件。
Bk=Ak ∩Bk-1
ð Pr{Bk}=Pr{Bk-1}Pr{Ak | Bk-1}
初始条件Pr{B1}=Pr{A1}=1.
如果b1,b2,…,bk-1互异,条件概率bk与b1,b2,..bk-1互异的概率为(n-k+1)/n
Pr{Bk}=1*((n-1)/n)* ((n-2)/n)*…((n-k+1)/n)
根据1+x<=e[x]
Pr{Bk}<=e[-1/n-2/n…-(k-1)/n]<=0.5
K(k-1)>=2nln2
当n=365时,解得k>=23。
因此,如果至少有23个人在一个房间里,那么至少有两个人生日相同的概率至少是0.5。
1.2 引申问题
一个房间里必须要有多少人,才能让某人和你生日相同的概率至少为1/2?必须要有多少人,才能让至少有两个人生日为7月4日的概率大于1/2。
第一个问题:
使用与前面类似的分析方法,可以得
1-((n-1)/n)[k-1] >= 0.5
从而解得k>=254人
第二个问题:
同样采用求补法:
分成两种情况考虑问题:
第一种情况:没有一个人生日为7月4日
第二种情况:有一个人生日为7月4日
可得表达式1-((n-1)/n)[k] – (k/n)((n-1)/n)[k-1]>=0.5
生日悖论问题——《算法导论学习笔记》相关推荐
- 算法导论中C语言代码,算法导论-学习笔记与进度
算法导论 阅读进度 第一部分 基础知识 第一章 计算中算法的角色 Done 1.1 算法 输入与输出 算法可以解决哪些问题 数据结构 技术 一些比较难的问题 1.2 作为一种技术的算法 效率 算法和其 ...
- 【算法导论学习笔记】第3章:函数的增长
原创博客,转载请注明: http://www.cnblogs.com/wuwenyan/p/4982713.html 当算法的输入n非常大的时候,对于算法复杂度的分析就显得尤为重要,虽然有时我们能通 ...
- 算法导论学习笔记 第7章 快速排序
对于包含n个数的输入数组来说,快速排序是一种时间复杂度为O(n^2)的排序算法.虽然最环情况的复杂度高,但是快速排序通常是实际应用排序中最好的选择,因为快排的平均性能非常好:它的期望复杂度是O(nlg ...
- 算法导论学习笔记 第6章 堆排序
在本章中介绍了另一种排序算法:堆排序(heapsort).与归排序一样,但不同于插入排序的是,堆排序的时间复杂度式(Onlgn).而与插入排序相同,但不同于归并排序的是,堆排序同样具有空间原址性(我理 ...
- 算法导论学习笔记 第2章 算法基础
本章介绍了一个贯穿本书的框架,后续的算法设计都是在这个框架中进行的. 本章通过插入排序和归并排序两种常见的算法来说明算法的过程及算法分析,在分析插入排序算法时,书中是用了循环不变式证明了算法的正确性, ...
- 【转】算法导论学习笔记 一 分治算法
分治策略是一种常见的算法.在分治策略中,我们递归的求解一个问题,在每层递归中应用如下三个步骤: 1. 分解,将问题分解成规模更小但解决方案相同的子问题 2. 解决,递归的求解子问题,如果子问题足够小则 ...
- 算法导论学习笔记1_循环不变式
循环不变式 1. 循环不变式和数学归纳法 2. 循环不变式的三条性质 3. 利用循环不变式分析插入排序 4. 练习题 2.1.3 1. 循环不变式和数学归纳法 在数学中,数学归纳法常用于证明给定命题在 ...
- 算法导论学习笔记 6.5 优先队列
优先队列(priority queue)是一种用来维护由一组元素构成的集合S的数据结构,其中的每一个元素都有一个相关的值,称为关键字(key).一个最大优先队列支持一下操作: INSERT(S, x) ...
- 计算机视觉算法——Transformer学习笔记
算机视觉算法--Transformer学习笔记 计算机视觉算法--Transformer学习笔记 1. Vision Transformer 1.1 网络结构 1.2 关键知识点 1.2.1 Self ...
最新文章
- vue写的简单版todolist
- EntityFramework SaveChange()方法不能更新的问题
- 片滚动插件myScroll
- 看了SUMTEC的稍微思考了一下…… 感触颇深。讲一件身边的事:
- python如何顺序执行多个文件/程序?
- win10 64位下运行汇编
- Vijos p1097 合并果子
- php eot eod_EOD的完整形式是什么?
- ios13 无法传参_iOS13个人热点功能频遭投诉
- SpringMVC的拦截器讲解
- Android 系统(250)---main log导入到uart口
- mysql 5.6.32 linux_centos7 下手动安装MySQL-5.6.32-1.linux_glibc2.5.x86_64.rpm-bundle
- jinja2 中的 Template 批量替换json字符串中的内容
- O记云基础架构大跃进:甲骨文睡醒了
- 4.4GDI基本图形
- C++ Primer 笔记——嵌套类 局部类
- Ubuntu 20.04 安装 php 并配置 OpenResty
- 液压系统原理动画_图文讲解液压系统溢流阀分类与工作原理
- 红月服务器制作过程,红月3.8C私服架设教程
- Minio集群搭建之查看元数据信息
热门文章
- 交通运输综合管理信息平台建设方案(附下载)
- Element Select选择器从服务器搜索数据,输入关键字进行查找(从服务器获得的数据有分页)
- 20220312纪中集训总结
- 什么是PHP?它的擅长领域是什么?它的工作原理是什么?
- 淘宝/天猫如何获取sku API接口,item_sku - 获取sku详细信息
- 友盟(https://www.umeng.com/)
- 双线性插值与三线性插值
- 【树形结构】巴基斯坦城市列表 (城市原始数据来自md文件)
- 瀚云轩玉石系统瀚云轩玉石竞拍系统开发玩法与开发源码分享
- 【风控系列】2. 如何构建一个有效的风控系统