Eli tod.näk että 13 hengen seurueesta ainakin kolme syntynyt samana päivänä?
Ei mitään hajua kun en ole tälläistä ennen laskenut....
Ei mitään hajua kun en ole tälläistä ennen laskenut....
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 26
Vanhimmat
Äkkiä pähkäillen: 1-(kaikki eri päivinä)-(kahdella sama)
(aika iso kyllä tulee: 0,4)
https://www.wolframalpha.com/input/?i=1-(364*363*362*361*360*359*358*357*356*355*354*353/365^12-(1/365*13*12/(2*1)))
Muuttuuko kaava, jos halutaan huomioida karkauspäivät?
Liian iso tulos tuo 0,4 ilman muuta. Kolmeentoista henkilöön sattuu kaksi samaa syntymäpäivää vain 19,4 prosentin todennäköisyydellä. Kolmen todennäköisyys on tietysti vielä paljon pienempi.
Miten laskit tuon 19,4? Sen saan mäkin kakkosella simuloimalla, mutta keksittekö mikä luku pitää mun koodissa (tuolla alla viestissä, joka siis simuloi kolmoselle) muuttaa tuota varten?
Ei_taida mennä aivan noin !
Binomikaava esiin.
Tehtävä pitäisi määritellä huolellisesti. Samana päivänä tarkoittaa, että myös samana vuonna.
Eli pitäisi ilmaista esim: synttärit ovat samana päivänä.
Tuo alottajan tehtävän ratkaisu vaatisi muutaman lisäolettamuksen: on kyse ihmisistä, joiden ikä- ja sukupuolijakauma vastaa Suomen väestöä. Näin voitaisiin määrittää mahdollisten päivien kokonaismäärä.
Tässäkin+simulaatio+on+avain+onneen:
var+N+=+100000;+console.log(new+Array(N).fill((_,i)=>["Jotainhan",+"sinne",+"on",+"aluksi",+"työnnettävä",+"jotta",+"mäppi",+"toimii!+"][i%8]).map(_=>function(people,+atLeastSame)+{var+ret+=+{};+for+(let+i=0;+i<people;+i++)+{let+x+=+function(min,+max)+{return+Math.floor(Math.random()*(max-min+1))+min;}(0,+365);+if+(!ret[x])+ret[x]+=+0;+ret[x]++;+if+(ret[x]>=atLeastSame)+return+true;+}return+false;+}(13,+3)?1:0).reduce((a,b)=>a+b,0)/N);
...about+0,002
Tuo alku on oikein, todennäköisyys, että on vähintään yhdet synttärit vuoden samana päivänä on
1-(364*363*362*361*360*359*358*357*356*355*354*353/365^12)
Samaa kaavaa soveltaen nähdään, että jos hieman yri parinkymmenen hengen määrällä tn on oli puolet, että vähintään kahdella on synttärit samana päivänä.
Sen sijaan tuo, että täsmälleen kahdella on sama synttäripäivä, on laskettu väärin. Jos tuota kaavaa (1/365*13*12/(2*1) ) sovellettaisiin muutaman kymmenen ihmismäärälle, saataisiintn > 1 että kahdella on synttärit samana päivänä.
Mikä tämän oikea vastaus sitten on ? Hieman enemmän pähkäiltyä tuli noin 0,0164
https://www.wolframalpha.com/input/?i=1-(364*363*362*361*360*359*358*357*356*355*354*431/365^12)
siis tuo jälkimmäinen vähennettävä olisi: 1/365(13*12)/2*(364*363*...*354)/365^11)
Vastaus on
470147013509911999593057049 / 223652812954006432729697265625
likiarvoltaan
0.0021021287740592665864372157...
Simulaatio, jonka joku jo tekikin, tukee tätä, joten olen melko varma että se on oikein. Myös ketjun tuottama matriisi näytti ihan hyvältä.
Sain tämän, milläpä muullakaan kuin, Markovin ketjuilla :D
Idea on se, että yksi kerrallaan otetaan ihminen ja tehdään siirtymät sen mukaan.
Tiloiksi kaikki mahdolliset {1: a, 2: b}, missä a on se kuinka monta päivämäärää on joille on tullut yksi synttäri ja vastaavasti b se kuinka monelle on tullut kaksi ihmistä, joilla on synttäri tuona päivämääränä. Lisäksi kaksi (absorboivaa) päätöstilaa: "laskettiin kaikki ja ei tullut kolmea" sekä "saatiin kolme".
Lähdetään tilasta {1: 1, 2: 0} eli on laskettu yksi ihminen jo valmiiksi ja tietenkin saatu yksi päivämäärä, jona yhdellä on synttäri. Siitä sitten lähdetään etenemään, tilasiirtymätodennäköisyydet tulee melko yksinkertaisesti, mutta oli siinä vähän pohtimista kuinka koodata se.
Laitan python-koodini, jos vielä löydän sen yhden sivuston mihin niitä kerrankin laitoin.
Ai niin, karkaspäivä... sitä en taida alkaa pohtimaan, mutta melko merkityksetön sen vaikutus taitaa olla.
Koodi täällä: http://tpcg.io/oGXKwv
Lopputulos sievnnetty tuosta saadusta rationaaliluvusta:
http://www.wolframalpha.com/input/?i=11753675337747799989826426225 / 5591320323850160818242431640625
Binomikavaa soveltamalla sain 0.00210.
Millä tavoin sovelsit?
Tässä ongelmaan liittyviä linkkejä:
https://math.stackexchange.com/questions/25876/probability-of-3-people-in-a-room-of-30-having-the-same-birthday
https://www.math.ucdavis.edu/~tracy/courses/math135A/UsefullCourseMaterial/birthday.pdf
Ks tuon linkin kohta 2.4, kaava (2), siinä on sovellettu multinomiaalitodennäköisyyksiä.
Hmmm. tuo das Gruptan kaava antaa saman tuloksen kuin ohjelmani (jippiii ! :D):
Paitsi, että piti laittaa kaavassa summan ylärajaksi kattofunktio (linkissä joku hakasulku, eikös se tarkoita kokonaisosaa, no luultavasti katto on oikein, sillä se antaa saman tuloksen, pitänee vielä testailla esim. tapauksissa, joissa voi vaikka brute-forceta oikein vastauksen tietoonsa)
Tässä vielä ohjelmalinkkini:
das Gruptan kaava: http://tpcg.io/wI0Mdi
oma markovin ketju ohjelmani: http://tpcg.io/wI0Mdi
No nyt se tuli se sama linkki, oma ohjelmani siis: http://tpcg.io/gsFc0R
Pientä eroavaisuutta noissa kyllä eri luvuilla tulee ja ei auta ylärajankaan muutteluut dasGuptassa. Jotain oletuksiahan tuota kaavaa varten täytyy muuten tehdä, kuten, että m>=n, jotta ei tule negatiivisen luvun kertomaa.
Eiku: musta tuntuu, että sen ylärajan pitää olla aina int(n/2.0) 1
Korjattu dasGupta: http://tpcg.io/0pfax6
Tällä näyttäs tulevan aina sama vastaus.
(PS. ja joo siinä das Guptan nimessä ei oo ärrää)
Lukion tiedoilla ajattelin näin:
Todennäköisyys sille, että henkilöllä on syntymäpäivä tiettynä päivänä on 1/365. Todennäköisyydet eivät riipu toistaan, joten käytin kaikille samaa. Sitten binomikaavasta todennäköisyydet sille, että k henkilöllä tuosta 13 joukosta on syntymäpäivä yhtenä tiettynä päivänä. Tästä summaamalla todennäköisyys p sille että k>=3. Tuloksena on pieni luku p=5.76182E-6.
Vuodessa on "noin" 365 päivää. (1-p)^365 on vastatapauksen todennäköisyys vuotta kohti ja 1- (1-p)^365 = 0.002101 on haettu todennäköisyys. Se on käytännössä sama kuin p*365, kun p on noin pieni.
Tapaukset
A_j = "päivänä j on k>=3",
j=1, 2, .., 365 eivät ole riippumattomia keskenään, joten vastatapauksen tn:ää ei saada tulona
(1-p)^365,
mutta se antaa hyvän approksimaation, koska tapahtumat taitavat olla vain "hieman riippuvaisia".
Hyvä approksimatiivinen ratkaisu joka tapauksessa. Hankala vaan arvioida tuota kuinka riippuvia nuo tapahtumat ovat. Approksimaatio taitaa toimia hyvin myös pienillä luvuilla ja silloin kun todellinen tn. pitäisi olla jo yksi, kun ihmisiä on yli kaksi kertaa päivien määrä eli jollekin päivälle putoaa varmasti kolmas ihminen. Mutta tuosta tapauksesta juuri näkee, että tuo metodi ei voi olla eksakti, sillä se ei anna tn:ksi tasan ykköstä, mutta hyvin lähelle kylläkin.
"kun+ihmisiä+on+yli+kaksi+kertaa+päivien+määrä+eli+jollekin+päivälle+putoaa+varmasti+kolmas+ihminen.+Mutta+tuosta+tapauksesta+juuri+näkee,+että+tuo+metodi+ei+voi+olla+eksakti,+sillä+se+ei+anna+tn:ksi+tasan+ykköstä,+mutta+hyvin+lähelle+kylläkin".+
Näin+on.+Jos+päiviä+olisi+365+sijasta+vaikkapa+6,+niin+tuolla+menettelyllä+laskien+todennäköisyydeksi+tulisi+0.9386,+kun+oikea+arvo+on+1.+Tuloksen+suhteellinen+virhe+lienee+täten+<+6.5+%+ja+sitä+pienempi,+mitä+enemmän+eri+päiviä+tarjolla+tuolle+13+joukolle.
Laitetaan nyt vielä tämä testiohjelma: http://tpcg.io/hz95um
Toimii arvoille, joissa m (eli päivien määrä) selvästi suurempi kuin n (eli ihmisten määrä)
Mutta esim. tapauksessa m=5 ja n=18, omani antaa 1, niinkuin pitääkin (koska n ei mahdu m:ään laatikkoon ilman että ainakin yhteen menee 3), mutta dasGupta ei anna ykköstä.
En tiiä onko tuo mun Guptan kaavan koodaus sitte yhä pielessä?
Entä paljonko täytyy olla luokalla oppilaita, jotta on tn > 1/2, että vähintään kahdella on synttärit samana päivänä. Laskelmieni mukaan 22.
Tuo on se perus syntymäpäiväongelma: https://en.wikipedia.org/wiki/Birthday_problem
ja vastaus on 23, jolla tn on 0,507297 (22:lla se on vasta 0,475695)
Kaava on
1 - n! * C(365, n) / 365^n.
Tripletille vastaava ihmismäärä on Anirban DasGuptan mukaan 88 (P=0,511; kun 87:lle P on vielä 0,499).
Oma ohjelmani hyytyy näin suurille luvuille, sillä tilojen määrä kasvaa toiseen potenssiin ja matriisi on tilojen määrä x tilojen määrä ja matriisin potenssiinkorotus (joka tosin on toteutettu jatkettuna toiseen korotuksena) on sekin tilojen määrän mukainen, joten tuleeko siitä nyt O(n^4 log(n)) -algoritmi sitten :D
Joo, niin onkin. Unohdin laskea mukaan sen ensimmäisen henkilön. Tulosta voidaan kai pitää intuition vastaisena, sillä 23 oppilasta merkitsee, että luokalla on synttäreitä keskimäärin kaksi kertaa kuukaudessa.