Narozeniny Paradox


Original: http://www.efgh.com/math/birthday.htm

Prosím, e – mailové komentáře , opravy a dodatky k webmastera na [email protected]

Oblíbený problém v elementární pravděpodobnosti a statistiky kurzů jeNarozeniny Problém: Jaká jepravděpodobnost, že alespoň dva z N náhodně vybraných lidí, kteří mají narozeniny ve stejný den ? ( Stejný měsíc a den , ale ne nutněstejný rok . )

Druhá část problému : jak velká musí být N tak, že pravděpodobnost je větší než 50 procent ? Odpověď je 23 , což připadá většině lidí jako nepřiměřeně malé . Z tohoto důvodu ,problém je často nazývánnarozeniny Paradox . Některé sharpies doporučujeme sázet na i peněz , že existují duplicitní narozeniny mimo jakoukoli skupinu 23 a více osob . Lze předpokládat, že tam jsou některé špatně informovaní hlupáci , kteří budou přijímat sázky .

Tento problém je obvykle zjednodušen tím, za předpokladu, že dvě věci :

Nikdo se narodil 29. února .
Narozeniny lidí jsou rovnoměrně rozloženy v průběhu dalších 365 dní v roce .

Jedna z prvních věcí, které všimnete o tomto problému je, že je mnohem jednodušší vyřešit doplňující problém : Jaká jepravděpodobnost, že náhodně vybrané N lidé mají všechny různé narozeniny ? Můžeme napsat to jako rekurzivní funkce :

dvoulůžkové different_birthdays ( int n )
{
návrat n == 1 ? 1.0 : different_birthdays ( n – 1 ) * ( 365,0 – ( n – 1 ) ) / 365,0 ;
}

Je zřejmé, že pro n = 1, je pravděpodobnost 1 . Pro n> 1 ,pravděpodobnost jeprodukt dvou pravděpodobností :

Že první N – 1 lidé mají všechny různé narozeniny .
To, že N – tý člověk má narozeniny je rozdílná od první N – 1 .

Program pro zobrazení pravděpodobností jde něco jako toto :

void main ( void )
{
int n ;
pro ( n = 1, n < = 365 ; n + + )
printf ( " % 3d % e \ n " , n , 1,0 – different_birthdays ( n ) ) ;
}

Výsledkem je něco jako toto :

1 : 0.000000e +00
2 : 2.739726e – 03
3 : 8.204166e – 03
4 : 1.635591e – 02
5 : 2.713557e – 02
***
20 : 4.114384e – 01
21: 4.436883e – 01
22: 4.756953e – 01
23 : 5.072972e – 01
24 : 5.383443e – 01
25 : 5.686997e – 01
***

Pravděpodobnost, že alespoň dvě z N lidí, kteří mají stejné narozeniny vzroste nad 0,5 je-li n = 23 .

Ale co přestupný rok ?

Původní problém může být vyřešen s logaritmickým pravítkem , což je přesně to , co jsem udělal , když jsem ho před mnoha , mnoha lety slyšel poprvé .

Pokud přidáme 29.února do mixu , mnohem složitější je to u každého. V tomto případě jsme se provést některé další předpoklady :

Stejné množství lidí se rodí na jiných než 29.února dní .
Počet lidí narozených 29. února je jedna čtvrtina z počtu osob narozených na jiný den .

Proto je pravděpodobnost, ženáhodně vybraná osoba se narodila 29. února je 0.25/365.25 , apravděpodobnost, ženáhodně vybraná osoba se narodil na jiném určeném dni se 1/365.25 .

Pravděpodobnost, že N osoby , případně včetně jednoho se narodil 29. února , mají odlišné narozeniny jesoučtem dvou pravděpodobností :

Že N osoby se narodili v různých N jiných než 29.února dní .
Že N osoby se narodili na N různých dnech , a jsou jedna osoba narodila 29. února .

Pravděpodobnosti přidávat , protože tyto dvě věci se vzájemně vylučují .

Nyní každý pravděpodobnost lze vyjádřit rekurzivně :

double different_birthdays_excluding_Feb_29 ( int n )
{
návrat n == 1 ? 365.0/365.25 :
different_birthdays_excluding_Feb_29 ( n – 1 ) * ( 365,0 – ( n – 1 ) ) / 365,25 ;
}

double different_birthdays_including_Feb_29 ( int n )
{
návrat n == 1 ? 0,25 / 365,25 :
different_birthdays_including_Feb_29 ( n – 1 ) * ( 365,0 – ( n – 2 ) ) / 365,25 +
different_birthdays_excluding_Feb_29 ( n – 1 ) * 0,25 / 365,25 ;
}

Program pro zobrazení pravděpodobností jde něco jako toto :

void main ( void )
{
int n ;
pro ( n = 1, n < = 366 ; n + + )
printf ( " % 3d % e \ n " , n , 1,0 – different_birthdays_excluding_Feb_29 ( n ) –
different_birthdays_including_Feb_29 ( n ) ) ;
}

Výsledkem je něco jako toto :

1: – 8.348357e – 18
2 : 2.736445e – 03
3 : 8.194354e – 03
4 : 1.633640e – 02
5 : 2.710333e – 02
***
20 : 4.110536e – 01
21: 4.432853e – 01
22: 4.752764e – 01
23 : 5.068650e – 01
24 : 5.379013e – 01
25 : 5.682487e – 01
***

Jak se dalo očekávat , že pravděpodobnosti jsou o něco nižší , protože je zdemenší pravděpodobnost, že odpovídající narozenin , pokud existuje více možných narozeniny . Alenejmenší číslo s pravděpodobností větší než 0,5 je stále 23 .

Samozřejmě, žematematický puristické může argumentovat , že přestupné roky ne vždy přijít jednou za čtyři roky , takže výpočty potřebovat další modifikace . Nicméně, poslední Quadriennale rok , který nebylpřestupný rok 1900 , adalší , kdo bude 2100 . Počet osob, kteří nyní žijí , kteří se narodili v roce 1900 , je tak malý, že si myslím, naše aproximace je platná pro všechny praktické účely . Ale jste vítáni , aby požadované změny , pokud si budete přát .

Narozeniny Paradox má vliv i mimo svět salonu sázení . Standardní technikou v ukládání dat , je přiřadit každému bodu a volané číslohash kód . Produkt je pak uložen do zásobníku odpovídající jeho hash . Tím se urychluje načítání , protože pouzejeden zásobník , musí být vyhledán . Narozeniny Paradox ukazuje, že pravděpodobnost, že dvě nebo více položek skončí ve stejném zásobníku je vysoká, i v případě, že počet kusů je podstatně menší , než je počet zásobníků . Proto efektivní manipulace zásobníků , které obsahují dva nebo více položek je nutné ve všech případech .

Comments are closed.