用Python對生日悖論問題的驗(yàn)證(含代碼)
????????相信有不少人以前就有聽到過一個(gè)悖論,一個(gè)班如果有60人,那么這個(gè)班里至少有兩個(gè)人生日相同的概率要大于99%。一開始聽到這個(gè)結(jié)論的時(shí)候,我的直覺就告訴我這怎么可能啊是吧,但事實(shí)上,這個(gè)直覺上十分錯(cuò)誤的結(jié)論竟然是正確的,這就是今天我們這篇文章探討的問題——生日悖論。
????詳細(xì)定義(摘自百度百科)
????????????生日悖論是指在不少于 23 個(gè)人中至少有兩人生日相同的概率大于 50%。例如在一個(gè) 30 人的小學(xué)班級中,存在兩人生日相同的概率為 70%。對于 60 人的大班,這種概率要大于 99%。從引起邏輯矛盾的角度來說,生日悖論并不是一種 “悖論”。但這個(gè)數(shù)學(xué)事實(shí)十分反直覺,故稱之為一個(gè)悖論。
????1.分析工具
??????????Python
??????????matplotlib庫,numpy庫,pandas庫等等
?????2.理論分析
????????????其實(shí)仔細(xì)看這個(gè)問題大家就會(huì)發(fā)現(xiàn),這個(gè)問題怎么這么像咱上學(xué)期學(xué)的概率的題型呢,其實(shí)這就是一道概率題,計(jì)算在n個(gè)人中,至少有兩個(gè)人生日相同的概率。誒,這樣子看起來是不是就很簡單了呢,現(xiàn)在我們再把問題轉(zhuǎn)換一下,要想得出至少有兩個(gè)人生日相同的概率,我們只用求n個(gè)人中每個(gè)人生日都不一樣的概率不久可以了么,然后再用1減去這個(gè)概率,這樣子這個(gè)問題就非常好解決了,下圖是詳細(xì)推算過程。

????????這樣子,我們就有了這個(gè)‘隨機(jī)取n個(gè)人,其中至少有兩人生日相同’的概率的關(guān)系式了,通過計(jì)算我們不難得出下表的數(shù)據(jù)。

????????是不是感覺有點(diǎn)假,不過這個(gè)是事實(shí)了,從一堆數(shù)據(jù)中得出一些奇妙的結(jié)論,這就是分析一些奇怪的數(shù)據(jù)的作用了(詳情參考我的上一篇文章XD),利用這些數(shù)據(jù),我們可以畫出它的曲線圖。

????????????可以看到,這是一條很普通的曲線,但是,你覺得這篇文章到這里就結(jié)束了么,恰恰相反,接下來的內(nèi)容才是本文的主菜。
??????3.用實(shí)際數(shù)據(jù)驗(yàn)證
????????? ?說了這么多,其實(shí)都只是理論推理,也就是紙上談兵,一個(gè)成功的理論,得有堅(jiān)實(shí)的數(shù)據(jù)支撐起來。下面我們來說一下實(shí)際數(shù)據(jù)的驗(yàn)算過程,
????????????(1)獲取一個(gè)有1331人生日的列表
????????????(2)當(dāng)有n個(gè)人時(shí),從這1331人中隨機(jī)取出n個(gè)人,并判斷這n個(gè)人中是否有至少兩個(gè)生日相同的人。
看起來不是很難,用代碼實(shí)現(xiàn)起來更是方便了,

同樣的,實(shí)際數(shù)據(jù)也計(jì)算n=10到n=50的數(shù)據(jù),得出下列數(shù)據(jù)。

????????? 畫成曲線圖就是這樣的??

看起來是不是和公式算出來的曲線很像?如果把兩根曲線放在一起,就i成了,這樣,

????這是我們再用最近學(xué)的相關(guān)指數(shù)R^2可以算出,兩條曲線的擬合度有99.8之高
????????也就是說,在我們學(xué)校,這個(gè)悖論可是實(shí)打?qū)嵉某闪⒌?,每個(gè)班都有60,70人,這里面基本上都會(huì)有至少兩個(gè)人會(huì)在同一天過生日,這就是本篇文章的結(jié)論了,但,,具體有什么用呢?好像除了可以拿去吹水以外,,好像就真的沒什么用了。
PS:可以去跟數(shù)學(xué)老師對線。