生日悖論問題 《演算法導論學習筆記》

2021-06-16 05:24:58 字數 1239 閱讀 1065

乙個房間裡的人數必須達到多少,才能使兩個人生日相同的機會達到

50%?不考慮閏年情況,也就是一年按照

365天來計算。

解答:假設房間裡的人數是

k,我們對其進行編號:

1, 2, … , k

。為簡單起見,用

n表示一年的天數(也就是

365天),那麼乙個人的生日在一年中的哪一天應該是機會均等的,我們用

bi表示第

i個人的生日,

1<=bi<=n

,因此,

pr=1/n

,對於i=1,…,k

;r=1,...,n

成立。這個問題可以通過求補法來求解:

也就是先計算任意兩個人的生日都不相同的概率,然後用

1去減,就可以算得相應概率。

k個人各有互不相同生日的事件為

bk = ∩ai(i=1,..,k)

其中ai

是指對所有的j,i

與j生日不同的事件。

bk=ak ∩bk-1

ðpr=prpr

初始條件

pr=pr=1. 如果

b1,b2,…,bk-1

互異,條件概率bk與

b1,b2,..bk-1

互異的概率為

(n-k+1)/n

pr=1*((n-1)/n)* ((n-2)/n)*…((n-k+1)/n)

根據1+x<=e[x]

pr<=e[-1/n-2/n…-(k-1)/n]<=0.5

k(k-1)>=2nln2

當n=365

時,解得

k>=23

。因此,如果至少有

23個人在乙個房間裡,那麼至少有兩個人生日相同的概率至少是

0.5。

乙個房間裡必須要有多少人,才能讓某人和你生日相同的概率至少為

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

演算法問題 生日悖論

問題 乙個屋子裡人數必須要達到多少人,才能使其中兩人生日相同的機會達到50 為了回答這個問題,設 1 設k是屋子裡的總人數,對每乙個人進行編號,則編號為1,2,3 k 2 設所有年份都是365天,最大天數n 365 3 bi表示第i個人的生日天數,所以1 bi 360,1 i k public cl...

《演算法導論》學習筆記 排序問題

核心思想 就相當於你在抓取撲克牌,第一張撲克牌是不用排序的,當你抓取第二張撲克牌的時候才與之前的撲克牌排序,當你抓取第三張撲克牌的時候,第 一 二張撲克牌是已經排好的。package com.example public class myclass i沒有以0開始,是因為第一張撲克牌不用排序,相當於...

《演算法導論》學習筆記

4.5.1 二分查詢 乙個經典的問題 如何在乙個嚴格遞增序列a中找出給定的數x 最直接的辦法是 線性掃瞄序列中的所有元素,如果當前元素恰好為x,則表明查詢成功 如果掃瞄完整個序列都沒有發現給定的數x,則表明查詢失敗,說明序列中不存在數x。這種順序查詢的時間複雜度為o n 更好的辦法便是使用二分查詢 ...