Sattumaako?

Matematiikka + todennäköisyys + uhkapelit = mahtavuutta. Vaikka yleensä vain nauran, kun porukka häviää rahansa baarissa blackjack -pöydässä, niin silloin tällöin tulee muutama kymppi huvitteluna tuhlattua pelailuun.

Jos unohdetaan huvi ja katsotaan asiaa vaan rahan näkökulmasta. Onko järkeä pelata?

Talo vain vain voittaa aina. Miksi? Koska kaikkien pelien odotusarvo pelaajan kantilta on negatiivnen. Eli pelaaja voi olettaa häviävänsä jokaisella kieroksella. Vaikka näinhän ei aina tunnu, niin pitkällä juoksulla keskimäärinen “voitto” per kieros on negatiivinen.

Puhutaankin niin sanotusta palautusprosentista. Eli jos palautusprosentti on vaikka 92% niin peli palauttaa 92% siihen syötetyistä rahoista takaisin pelaajalle ja loppu 8% jää talolle. Otetaan yksinkertainen esimerkki. Ruletti. Ruletissa voi mm. veikata vain jompaa kumpaa väriä ja jolloin voittokerroin on 1 (eli jos pelaat 5€ ja voitat niin talo maksaa sinulle 10€). Todennäköisyys voittaa veikkaamalla jompaa kumpaa väriä on.

P(“Voittaa ruletissa veikkaamalla mustaa  tai punaista”) = 18/37 = 0.486486…

Jolloin odotusarvo esim 5€ panoksella.

5*0.486 + (-5)*(1-0.486) = -0.14

Vaikka todennäköisyys voittaa on melkein 50/50 niin silti pitkällä tähtäimellä jälleen talo voittaa.

Jos todennäköisyys voittaa on alle 50% niin pitkällä tähtäimellä häviää aina, mutta voisiko jotenkin jäädä plussalle? Entäs jos tekisi juuri päin vastoin. Tekisi pelistä mahdollisimman lyhyen. Eli kerralla kaikki ja toivotaan parasta? Ashley Revellmyi koko omaisuutensa ja asetti 135,3 tuhannen dollarin panoksen punaiselle ja voitti.

Voitaisiin toki pelata esim. martingaalistrategialla, jossa häviön sattuessa aina tuplataan panos ja näin ollen voiton tullessa jäädään plussalle alkuperäisen panoksen verran.

  • Panosta 1, häviät
  • Panosta 2, häviät
  • Panosta 4, häviät
  • Panosta 8, voitat

Nyt pelasit 1+2+4+8 = 15 eurolla ja voitit 16€. Joten jäit plussalle  1€. Teoriassa tämä toimii, jos rahaa ja aikaa on rajoittomasti. “:D” Tällä taktiikalla häviää vain rahansa nopeasti. Sillä panos kasvaa eksponentaalisesti: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 jne.

Se siitäkin. Entäs jos todennäköisyydet olisivat pelaajan puolella? Entäs jos pystytään matemaattisesti parantamaan voittotodennäköisyyttä? Esim. kortteja laskemalla. Mikä olisi paras tapa panostaa (pitkällä tähtäimell), jotta tuotto olisi paras mahdollinen? Voidaan joko pelata koko ajan vakiopanoksella tai laittaa kaikki likoon tai käyttää Kellyn  strategiaa, jossa budjetista panostetaan aina prosentuaalisesti yhtä suuri pala. Tämä strategia on siitä mukava, että se hillitsee tappioita. Koska tappioputken sattuessa panos pienenee eksponentaalisesti. Kuten myös voitot kasvavat voittoputken sattuessa.

Tein nopiasti skriptin, joka demonstroi tätä. Todennäköisyys voittaa on 60% ja voittaessa panoksen saa tuplana takaisin. Sadan kieroksen jälkeen tulos on seuraavanlainen.


Tulos on aika selkeä. Noin 20 kieroksen jälkeen Kellyn strategian suunta on selvä. Tässä ei silti kannata kauheasti vielä tuulettaa. Koska esim. baareissa RAYn blackjack -pöydän palautusprosentti on naurettavat 91%. Joten edes esim. kortteja laskemalla ei päästä voitolle.

Posted in Höpinät, Jotain aivan muuta | Tagged , , , , , | Leave a comment

Lisää verkkoa

Tuossa jokunen aika sit tuli kirjoiteltua hiukan graafeista. Yks ilta Gephiä säätäes tuli saatua vähän enemmän visualisointia aikaan.

Muutamien eri algoritmien jälkeen tulos oli tätä. Lajittelualgo napsi erittäin hyvin “eri kaveripiirit”. Nodejen koko vielä, kun suhteutetaan linkkien määrään, niin tulos on ihan jees. Labelit jätin ihan yksityissyistä pois.

Mutta kylhän jokainen tietää omat kaveripiirinsä jne. Jotain  muuta kohdetta tarvittais. Joten otetaan kohteeksi lukio. Dumppi siis lukion facebook ryhmän listasta ja skripti pyörimään.

Tietyn ryhmän käyttäjälistan saa FQL:llä näppärästi seuraavaan tapaan.

SELECT uid FROM group_member WHERE gid = <ryhmän id>

Tiedot Gephiin ja katotaan mitä saadaan aikseksi.

Luokka-asteet tulee esille hyvin selkeesti sekä pienemmät porukat.

Seuraavaks voisi kattoa, mitä kaikkea esim Twitteristä saisi revittyä irti. Koska kuitenki Facebookin kaverisuhde on ihan eri asia kun Twitterin seuraus-suhde.

Posted in Jotain aivan muuta | Tagged , , , , , | Leave a comment

Häviötöntä musiikkia

Tarttuipa kauppareissulla mukaan Viikatteen uusin albumi. LP:n mukana tuli lappunen, jossa on koodi millä kyseistä levystä saa digitaalisen version. Mahtavaa!

Vaikka vinyylitkin saa ripattua koneelle, niin vaiva/käytetty aika on sen verran suuri, että mieluummin klikkailee iTunesssa albumin uudestaan omaksi. Digitaalinen versio on kuitenkin kiva omistaa tai heittäkää mua taskuun menevällä vinyylisoittimella.

Kyllä en halua mp3:sia vaan mieluiten häviöttömässä formaatissa olevat tiedostot biiseistä. Okeij, tämä on nillitystä. 90%:sta ei kuitenkaan kiinnosta missä muodossa musiikki on. Jäljelle jääneestä porukasta noin puolet ei huomaa eroa edes eri mp3:sten välillä. Jäljelle jäämme me idiootit, jotka väittävät, että 320 kbps mp3:sen ja FLAC:in välillä on eroja :3

Häviöttömät vievät toki vähän enemmän tilaa, mutta se on tänä päivänä kuitenkin halpaa shittiä.  Kaikki vähänkin vakavasti otettavat kannettavat soittimet tukee jotain häviötöntä formaattia. Eli mistä kiikastaa?

Nojoo. Ei kai auta valittaa, kun sentään antavat digitaalisen version kaupan päälle.

PS. Kansitaiteet on aina kivoja suurina :3

Posted in Lyhyet | Tagged , , , | Leave a comment

Hiukan verkkoa ja teoriaa

Verkkoteoria, mitä siihen nyt sanoisi. Hieno matematiikan haara, jolla pystyy visualisoimaan paljon mahtavia juttuja. Käyttämällä vaikka matriisirotaatiolineaarioptimointialgoritmiä ;)

Mihis muuhunkaan verkkoteoria istuisi paremmin, kuin sosiaalisiin verkostoihin? Lue: Facebookkiin. Tuo suuri ja paha Facebook, joka pitää kirjaa kavereistamme on loistava kohde.

Ideahan on yksinkertainen. Dumpataan Facebook:sta data ja piiretään sen avulla verkkokaavio. Ainut ongelma on vain, että alkuperäinen data ei ole siinä muodossa, että siitä saisi suoraan mitään järkevää aikaan. Tarvitaan siis jonkinlainen parseri väliin. Sellaistahan ei tietenkään valmiiksi löydy mistään. Joten semmonen tarvitsee tehdä.

Alunperin lähdin parseria toteuttamaan Node.js:llä ja sain sen pienten alkuongelmien jälkeen pelaamaan loistavasti. Jossain vaiheessa vain totesin, että blaah ja siiryin Pythoniin. Pitänee kyllä opetella node.js:sää tässä jossain vaiheessa paremmin.

Facebook tarjoaa suht mukavan Graph API:n jonka kanssa voi jutella Facebookin oman FQL kielen avulla. Muistuttaa hyvin paljon SQL:lää.

Esim. kaikkien omien kavereiden käyttäjä id:eet voi hakea.

SELECT uid2 FROM friend WHERE uid1 = <oma uid>

tai käyttäjän nimi id:n perusteella

SELECT name FROM user WHERE uid = <käyytäjän uid>

ja tarkistaa onko käyttäjät  A ja B kavereita keskenään

SELECT uid2 FROM friend WHERE uid1 = <A uid> AND uid2 = <B uid>

Jokainen kutsu tehdään HTTPS:n yli ja tiedot palautuu JSON-formaatissa, joka on oikein kiwi jatkokäsittelyä silmällä pitäen. Pullonkaulaksi muodostuu HTTPS-kutsut, joten homma kannattaa säikeistää. Sillä kaveruustarkistuksia saa tehdä aikas paljon. Koska jo esim. 150 kaverusta voidaan laittaa kättelemään 11175:llä eri tavalla.

Latex formula

Sadan kaverin lisäys nostattaa summa jo huomattavasti.

Latex formula

Kun kaikki on vihdoinkin saatu tarkistettua niin tiedot pitää pystyä ulostamaan myös sopivassa formaatissa. GEXF on tähän tarkoitukseen hyvin suoraviivainen. Listataan vain solmukohdat ja niiden väliset kytkökset.

Erittäin yksinkertainen esimerkki.

<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <meta lastmodifieddate="2009-03-20">
        <creator>Gexf.net</creator>
        <description>A hello world! file</description>
    </meta>
    <graph mode="static" defaultedgetype="directed">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
     </graph>
</gexf>

Vielä pitäisi saada kaavio aikaseksi. Itse käytin avoinmen koodin Gephi:iä, joka on siis omien sanojensa mukaan “graph visualization and manipulation software”. Teemo Tebest on mm. kirjottanut asiasta blogissaan. Kannattaa muuten kattoa. Huitsin mielenkiintosta juttua. Oikeasti ammattilainen näyttää miten näitä kuuluu tehdä ;).

Hetken aikaa Gephiä pyöriteltyä sain jopa jotain aikaiseksi.

Kuvasta pystyy selvästi erottamaan eri kaveriporukat ja ns. supersolmut. Ts. ihmiset, jotka ovat kaikkien kavereita.

Kuten huomataan, niin aika pienestä määrästä ihmisiä sadaan tosi sotkuinen kuva. Pitäisi tälle jotain vielä kehittää. Irkissä tästä olikin puhetta, että mikä olisi viisain tapata asia esittää. Otto mm. ehdotti tämmöistä. Ongelmaksi tulee vaan, jos useampi “supersolmu” haluaa olla samojen ihmisten kanssa ystäviä. Kuitenkin jost tästä lähtis pohtimaan ja jalostamaan ideaa. Katsoo nyt mitä lopulta keksii.

Posted in Höpinät, Jotain aivan muuta | Tagged , , , , , , , | 1 Comment

Kakku

<3

Posted in Lyhyet | Tagged , , | Leave a comment