Monty Hall problema arba kaip praturtėti

Parašė: Tadas, 2009-01-24 | Komentarų: 26
Kategorijose: Smagumynai

Nepraleiskite straipsnio – galbūt šios žinios jums kada nors uždirbs krūvą pinigų :].

Tarkime, dalyvaujate žaidime. Prieš jus 3 durys (žr. iliustraciją viršuje). Už vienų iš jų (tarkime #2) yra automobilis, už kitų dvejų ožkos (#1 ir #3). Tarkime, jūs pasirenkate #1 duris. Vedėjas atidaro duris, už kurių yra ožka (#3), ir siūlo jums pakeisti jūsų pasirinkimą. Klausimas: ar jūs turite daugiau šansų laimėti automobilį pasilikdami prie savo spėjimo, ar pakeitę jį?

Atrodytų, renkantis vieną iš dviejų variantų šansai yra lygūs – juk bet kuriuo atveju nežinome, už kurių durų yra automobilis. Bet pasirodo ne – pakeitus savo spėjimą tikimybė laimėti automobilį yra 2/3, o pasilikus su savo spėjimu – tik 1/3.

Kodėl? Pasilikdamas su savo pirmu sprendimu jūs laimėsite tik tuo atveju, jei iškart pasirinkote automobilį, t.y. šansai lygūs 1/3. Atitinkamai šansų pasirinkti vieną iš ožkų yra 2/3. Pasirinkę ožką ir pakeitę savo spėjimą jūs laimėsite. Kadangi tikimybė pasirinkti ožką yra 2/3, todėl ir tikimybė laimėti pakeitus spėjimą yra 2/3.

Neįtikinau? Nieko baisaus. Parašiau skriptą, kuris simuliuoja žaidimą ir skaičiuoja, ar iš tiesų šansų laimėti pakeičiant savo sprendimą yra daugiau.

<?php
/*
Tadas Syčiovas, 2009

http://laisvai.net

-----
Monty Hall Problem simuliacija

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

*/

$staying=0;
$switching=0;
//kiek kartų kartoti žaidimą?
$count=100000;

for ($i=0;$i<=$count;$i++) {
	$choises=array('goat', 'goat', 'car');
	shuffle($choises);
	$user_choise=rand(0, 2);

	//vedėjas atidaro vienas duris. tai negali būti žaidėjo pasirinktos durys arba durys, už kurių stovi automobilis
	for ($a=0;$a<=2;$a++) {
	     if ($a!=$user_choise and $choises[$a]!='car'){
	          unset($choises[$a]);
	     }
	}

	//ar laimime pasilikdami su pirmu sprendimu, ar pakeisdami jį?
	if ($choises[$user_choise]=='car')
		$staying++;
	else
		$switching++;
}

echo 'Staying: '.(100/$count*$staying).'%<br>
Switching: '.(100/$count*$switching).'%';
?>

Skriptas tik viską patvirtina:
Staying: 33.52%
Switching: 66.49%

Skaičiukai po kablelio varijuoja, bet rezultatas aiškus.

Na štai. Pasirodo teorija irgi gali būti įdomi :]. Jei kada šio straipsnio dėka laimėtumėte milijoną, būtų visai gražu pastatyti P4I gykams alaus :].

Daugiau informacijos: http://en.wikipedia.org/wiki/Monty_Hall_problem

CHRISTMAS D00M | Kalėdinis sveikinimas nuo P4I

Parašė: Tadas, 2008-12-20 | Komentarų: 2
Kategorijose: P4I, Smagumynai

Geras elfas

Kaip ir praeitais metais, šiais P4I chebra pristato mažą kalėdinę pramogą. Šį kartą tai žaidimas CHRISTMAS D00M.

Praeitais metais viską padarėm per kelias valandas, šių metų kūrinys pareikalavo kelių dienų. Kitų metų šventėms turbūt reikės pradėti ruoštis jau birželį :]

Jaukių Kalėdų ir linksmų Naujųjų!

Apie daugiskaitą

Parašė: Armandas, 2008-10-29 | Komentarų: 11
Kategorijose: Kodas, Python

Neseniai užmačiau vienąArtūro projektų. Iš karto prisiminiau, kad turiu nebaigtą blogo funkciją žodžių vertimui iš daugiskaitos į vienaskaitą:

def dgs(number, word=''):
    """Pluralization for Lithuanian (works partially)
 
       Kaip argumentą pateikite daugiskaitos vardininką
        - Pvz1: {{ 10|dgs:"Komentarai"}}
        - Pvz2: {{ 21|dgs:"Knygos"}}
    """
    if number in range(11,20) or (number % 10) == 0:
        #masculine and feminine forms are the same
        word = word[:-2] + u"ų"
 
    elif number == 1 or (number % 10) == 1:
        if word[-2:] == "ai":
            #masculine form
            word = word[:-2] + "as"
        elif word[-2:] == "os":
            #feminine form
            word = word[:-2] + "a"
 
    #default value is used in all other cases
    return "%d %s" % (number, word)

Nusprendžiau patobulinti taip, kad veiktų su bet kokiu daiktavardžiu, turinčiu vienaskaitos ir daugiskaitos formas (atkrenta tokie žodžiai kaip pienas, alus, durys, miltai).

Procesas buvo gan ilgas, Tomas astsiuntė žodžių sąrašą, su Python jį išparsinau, tada sekė duomenų analizavimas bei abstrakcija, o galiausiai programavimas (lengviausia dalis ;)

Šiaip rekomenduoju visiems pasižiūrėti į kodą ir prisitaikyti savuose projektuose. Kažkaip susidaro įspūdis, jog programuotojai bijo Lietuvių kalbos. Kur tik pažiūrėsi, vis matai “10 Komentarai (-ų)”, “5 Prekių (-ės)” ir pan. Tikrai nėra taip sunku parinkti tinkamą žodžio formą.

P.S. nebijokit Python’o, jis kaip pseudo-kodas :)

P.P.S. Žinau, kad mano unit testas nėra labai rafinuotas, tad kitą kartą pasitengsiu labiau :D

Happy B-day to us!

Parašė: Tadas, 2008-10-23 | Komentarų: 4
Kategorijose: Gyvenimas


                     i.
                     .7.
                    .. :v
                   c:  .x
                    i.::
                      :
                     ..i..
                    #MMMMM
                    0M  AM
                    8M  zM
                    4M  AM
                    2M  2MX#MM@1.
                    OM  tMMMMMMMMMMMM;
               .X#MMMM  :MMMMMMMMMMMMMv
           cEMMMMMMMMMU7@MMMMMMMMMMMMMM@
      .n@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.
     MM                               ;M.
     $M                               EM
     WMO$@@@@@@@@@@@@@@@@@@@@@@@@@@@@OMM
     #M                               cM
     QM                               tM
     MM                               CMO
  .MMMM                               oMMMt
 1MO 6MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM iMM
.M1  8M                               vM  'Mt
1M   @M ............................. WM   M6
 MM  .A8OQWWWWWWWWWWWWWWWWWWWWWWWWWWOAz2  #M
  MM                                     MM.
   @MMY                               vMME
     UMMMbi                      i8MMMMt
        C@MMMMMbt;;i.......i;XQMMMMMMt
             ;ZMMMMMMMMMMMMMMMM@A;.

Lygiai prieš 2 metus startavo P4I forumas. Neužilgo atsirado ir blogas. Projektas, prasidėjęs kaip avantiūra, vis dar gyvas ir nesiruošia niekur dingti. Tikimės, kad minėsim ir 3-ią, ir 4-ą ir tolesnius sukakojimus :)

Ta pačia proga norim pasveikinti ir Keturkampį apskritimą ;) Jei ne Nepo, gal būtumėm ir pramiegoję savo šventę :D

P4I chebra

Programuotojų diena

Parašė: Tadas, 2008-09-12 | Nėra komentarų
Kategorijose: Gyvenimas, Programavimas


Sveikiname visus kolegas ir prijaučiančius!

P4I komanda taip pat sudalyvavo programuotojų dienos konkurse. Pradėjome vakar apie 15 valandą su Tomu, vėliau prisijungė ir Armandas. Keikėmės daug, kelis kartus pasijutome lameriais, bet iš tikro jau senai taip smagiai programavom. Gėdos nepasidarėm (žr. criminal – Tomas buvo koordinatorius) – išsprendėm beveik visas užduotis, tik Captchai pritrūko laiko. Tiesa, per paprasčiausią išsiblaškymą praradome nemažai taškų Planetų užduotyje, nors sprendimas buvo surastas akimirksniu.

Apibendrinus – konkursą užskaitome ir laukiame kitų metų.

Užduotys čia.