Monty Hall Pythonilla – osa 3 

Viime vuoden puolella julkaisin kaksi artikkelia liittyen Monty Hall -probleemaan. Lupasin tehdä simulaation yleisestä tapauksesta, jossa vuohia on vähintään kaksi kappaletta ja autoja vähintään yksi. Lasketaan sellaisen tapauksen todennäköisyyksiä, että kilpailija aina vaihtaa valintansa, kun yksi vuohi on paljastettu.

Mikäli et ole lukenut aikaisempia tarinoita, niin katso täältä.

https://mikkorahikka.blog/2021/10/08/monty-hall-pythonilla/

https://mikkorahikka.blog/2021/10/29/monty-hall-pythonilla-osa-2/

Laitetaan tähän vielä muistin virkistykseksi Wikipediasta Monty Hall -pelin määritelmä: ”Monty Hallin ongelmassa kilpailijalla on edessään kolme ovea. Yhden oven takana on palkintona auto, kahden muun takana vuohi. Kilpailija, joka ei tiedä minkä oven takana mikin palkinto on, saa valita ovista yhden. Valittuaan oven hän ei vielä avaa sitä. Jäljelle jääneistä kahdesta ovesta avataan toinen, ja sen takana on aina vuohi. Tämän jälkeen kilpailija saa valita, vaihtaako ensin valitsemansa oven toiseen jäljellä olevaan suljettuun oveen, vai pitääkö ensin valitsemansa oven.”

python

Kolmen vuohen ja kahden auton tapauksessa vaikutti siltä, että todennäköisyys oli noin 8/15. 

Tehdään ohjelma, jossa vuohien ja autojen määrää voi muuttaa. Vuohia pitää olla vähintään kaksi, jotta peliä voi pelata ja autoja vähintään yksi. Kuvan koodi on Spyder-ohjelmointiympäristöstä.

Selitän rivillä 50 olevan yleisen kaavan johtamisen tarina loppupuolella.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Alla tulos Spyderin konsolista.

Nyt kun koodi näyttää toimivan, niin pakkohan sitä on kokeilla ylioppilaskoejärjestelmässä. Kopioin koodista rivit 10-52 ja sijoitin ne osoitteessa https://cheat.abitti.fi/build/index.html?fi&programming olevaan YTL:n Pythoniin. Ohjelma toimi, niin kuin sen pitikin.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

kuvaaja

3D-kuvaajan piirtäminen onnistuu helpoimmin, kun käyttää numpy-kirjastoa. Sillä saa kerralla laskettua funktion arvot matriisiin (2D taulukkoon), ohjelmakoodissa muuttuja Z rivillä 19. En kommentoi sen tarkemmin mitä kukin rivi tekee, jos haluat oppia, niin kokeile. Joskus opiskelen matplotlib ja numpy-kirjastot siten, että osaisin selittää miten ne oikeasti toimivat. Nyt olen vielä aloittelija niiden kanssa touhutessa. Useimmiten saan kuvaajat haluamikseni yrityksellä ja erehdyksellä.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Alla tuotos.

Tätä koodia ei voi suorittaa YTL:n Pythonissa, sillä se ei tuota kuvia. Alla vihreilmoitus osoitteessa https://cheat.abitti.fi/build/index.html?fi&programming

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

kuvaaja GeoGebralla

Edellisestä kuvasta on mielestäni hankala hahmottaa millaisilla arvoilla pelaaja voittaa. Niinpä päädyin käyttämään GeoGebraa.

Alla 3D-kuva

Loin sen kirjoittamalla GeoGebra 5:n syöttökenttään

p(x, y) = (x y + y (y – 1)) / ((x + y) (x + y – 2))

pp(x, y) = Jos(1 ≤ x < 11 ∧ 2 <= y < =11, p(x, y))

z=1/2

Piilotin p:n kuvaajasta. Ei tuonkaan kuvan pyörittely hahmota minulle, millainen alue on kyseessä.

Piirtoalueen xy-tasolle saa alueen, jossa p ≥ ½, näkyville seuraavasti. Jouduin hieman auttamaan GeoGebraa, jotta se osasi värittää epäyhtälön alueen.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Matikkanörtit voivat tutkia, millaiseta käyrästä on kyse.

ratkaisu kirjainlaskennolla

Koodeissa näkyvä yleisen ratkaisun lauseke voidaan johtaa oheisen puukaavion avulla.

Merkitään vuohien lukumäärää v:llä ja autojen a:lla.

Pelaaja voitttaa, jos toinen valinta on a. 

Jos hän valitsee vuohen ensin, niin sen todennäköisyys on v/(a + v). Tässä tapauksessa hän saa auton todennäköisyydellä a/(a + v – 2). Mahdollisuudet vähenevät kahdella, sillä hän ei voi valita samaa kuin ennen ja yksi vuohi on vähemmän.

Jos hän valitsee auton ensin, niin sen todennäköisyys on a/(a + v). Auton todennäköisyys tämän jälkeen on (a -1)(a + v + 2).

koodi

Tarinassa esitetty koodi löytyy Colabista

https://colab.research.google.com/drive/1Y2ODH9KNV4NX5OJ_8AbzWEzYW4Mz5Uoc?usp=sharing

lähteitä

Monty Hall englanniksi Wikipediass

https://en.wikipedia.org/wiki/Monty_Hall_problem

ja suomeksi https://fi.wikipedia.org/wiki/Monty_Hallin_ongelma

Lisää pohdittavaa tässä artikkelissa

https://www.researchgate.net/publication/233565559_The_Monty_Hall_Problem_Reconsidered

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggaajaa tykkää tästä: