Prog.Hu

Tippmix probléma

Keresés
Hírlevél

Tippmix

2013-09-08T23:59+02:00
Alonso
AlonsoProg.Hu
regisztrált tag
nyitotta: Alonso, idő: 2006.12.19. 15:11, moderátor: moderator, megoldás elfogadva: 2006.12.30. 17:09
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben

Kategóriák:Programozási nyelvek » Visual C++

Sorrend:
Időzóna:
Oldalanként:
Oszd meg!
Sziasztok !

Írtam egy kis tippmix programot. A tippmix olyan játék, hogy sporteseményekre lehet fogadni, hazai győzelemmel, döntetlennel vagy vendéggyőzelemmel.
Az egyes lehetséges eredményeknek oddsai vannak, ami azt jelenit, hogy ha eltalálod az eredményt, akkor az arra az eredményre feltett pénzed odds-szorosát kapod vissza. Tehát pl. MTK-UTE focimeccs esetén mondjuk
MTK győzelem 1.3x pénzt fizet, döntetlen 2.3szoros pénz, és UTE győzelem 3.5szeres pénz. Ekkor ha felteszek 200 Ftot az MTK-ra, és nyer az MTK, akkor
200*1.3, azaz 260 Ftom lesz (a 200at befizetem a fogadáskor, és vagy eluszik, vagy a szorzoval növelt pénz jön vissza). A kérdésem az, hogy a "várható értéke" a fogadésnak nem annyi (legyen odds1, odds2, odds3 a három szrozó, x a feltett pénz (ezt felbontom x1,x2,x3-ra mert 3 szelvénnyel akarok fogadni, minden eseményre teszek - azaz x=x1+x2+x3)), hogy :

varhato ertek=x1*odds1*prob1+x2*odds2*prob2+x3*prob3*odds3,


ahol a prob1...prob3-at az indulo oddsokbol kapom ?

Tehát a fenti példánál MTK esélye 1.3/(1.3+2.3+3.5).

Valszeg sose lesz olyan meccs, ahol a siker tuti, ha 3 szelvénnyel játszok, de veszteség minimalizálás érdekel.
Nem kell ide egy játékra számítógépes kód, hiszen egy program sem tud kiszámolni egy ismeretlen valószínűséget. Szóval egy illetve három játékra már elmondtam mi egy optimális stratégia, ez van két tippnél is:

első kettőre fogadva csak a cég oddsait felhasználva 1/x1 illetve 1/x2 legyen a két tippre fogadott pénz, ekkor 1-et nyerünk 1-p3 valószínűséggel és 1/x1+1/x2-t feltett pénzt elveszítjük, azaz várható nyeremény:
1-p3-1/x1-1/x2 , ha ez pozitív akkor nyersz. előzmény

Ezt elég jól ismerem, tippmix matematikája a következő:
legyen három kimenet, x1, x2, x3 szorzókkal.
Ez azt jelenti, hogy a cég is tippel, hogy milyen az egyes események valószínűségei, hiszen ezt persze senki nem ismeri, (kivéve, ha bunda van ). A cég szorzóiból viszont meg lehet kapni az általa tippelt valószínűségeket is! Ezek a következők:
1/x1, 1/x2, 1/x3, hiszen akkor van egyensúlyban, ha a várható nyeremény egy, ez pedig p valószínűség mellet p*x1-1=0 egyenletet jelent, azaz p=1/x1, ez kellett. Persze a valódi vlószínségeket a fogadó sem ismeri, akkor számára mi lenne az optimális játék? A következő: használja a cég áltál adott valószínűségeket és ilyen arányban tippeljen, azaz az első esetre 1/x1 forintot, másodikra 1/x2, harmadikra 1/x3 forintot tegyen fel, ekkor várható nyereménye, sőt pontos nyereménye is mindig egy forint, bármi is következik be, és veszít 1/x1+1/x2+1/x3 forintot, így a tippmixen van nyerő stratégia, ha 1/x1+1/x2+1/x3<1 teljesül. Ez a te példádban nem igaz:
1/1.3+1/2.3+1/3.5=1.49>1, így nem lehet tutira játszani. ((Máshol azért jobb oddsokat adnak)). Vagy az egyéni tippeket nézve mikor nyersz, ha a valódi valószínségeknél:
p1>1/1.3=0.77, azaz MTK 77%-nál nagyobb vszg-gel nyer, akkor várható nyereményed pozitív lesz, ha ráfogadsz.
p2>1/2.3=0.44, azaz döntetlen 44%-nál nagyobb vszg-gel, akkor megint várható nyeremányed pozitív lesz, ha rá fogadsz.
p3>1/3.5=0.29, azaz, ha 29%-nál nagyobb vszg-gel veszít az MTK, akkor megint pozitív a várható nyereményed, ha erre fogadsz. előzmény
Tehát a fenti példánál MTK esélye 1.3/(1.3+2.3+3.5).

Ez hülyeség, hisz ebben az esetben az MTK az esélyes...
De akkor mi a várható érték ? előzmény
Kis javítás: egyensúlyban lesz, ha a várható nyeremény nulla (és nem egy, ezt rosszul írtam!!!). előzmény
Oké, ksözi most olvasom a hozzászólásod előzmény
nem teljesen értem a problémádat!
Mint játékos, vagy mint tulajdonos akarod minimalizálni a költségeidet? előzmény
Mint játékos. De persze nem fogok 3 szelvénnyel 3 különbőző végkifejletre fogadni, hisz tutira vesztek, Csak fel akarom mérni, hogy mekkorák a veszteségek. De sose fogom ezt igy játszani előzmény
Oké, értem az 1/x1, stb. számításának jelentését, de nem értem, hogy pl. ha konkrétan a fenti eseményre fogadok, akkor a "várható érték" függ attól is, hogy mit teszek fel. Nem igaz ? Össze keveredtek a betűink, mert x-et a pénznek használtam, nem az oddsnak, Mindegy. Legyen akkor 1/x1, 1/x2,1/x3 az általad leirt százalákos esély, és nem a pénz. A várható érték ekkor nem a következő :

v. érték=(1/x1)*penz1+(1/x2)*penz2+(1/x3)*penz3 ? előzmény
Én mind a 3 eseményre akarok tenni elméletben (3 szelvénnyel), tehát nem csak egyre. előzmény
Igen a jelölésben én mást használtam.Nem jó amit írsz, mert x1,x2,x3 az oddsokat jelöli, így penz1, penz2, penz3 feltett pénz esetén a várható nyereményed:
p1*x1*penz1+p2*x2*penz2+p3*x3*penz3-penz1-penz2-penz3 ahol p1,p2,p3 az események pontos valószínűségei. előzmény
Oké. Valami olyan a diszkrét várható érték képlet, hogy (nem akarok itt most spéci karaktereket használni)

szumma esemény(i.) bekövetkezésének valószinüsége*esemény(i.) értéke
És akkor itt az odds*penz lesz esemény értéke, ugye ?

Az odds1 és a p1 függy egymástól. A p1-et akkor most hogy kapom ? Nem irhatok 1/x1-et p1-re,mert akkor máris egyszerűsitek a képletedben... előzmény
Tehát nem irhatom, hogy p1=1*x1, mert akkor

p1*x1*penz1=penz1 lesz előzmény
Igen odds*penz a kifizetett pénz összege, ha az esemény következik be.
Nem írhatsz p1 helyébe 1/x1-et, hiszen ezt nem ismerjük, de itt láthatod, hogy miről van szó: ha úgy fogadsz, ahogy mondtam, penz1=1/x1, penz2=1/x2, penz3=1/x3, akkor ezeket beírva a várható nyeremény:
p1+p2+p3-1/x1-1/x2-1/x3=1-(1/x1+1/x2+1/x3), hiszen p1+p2+p3=1 (teljes eseménytér) és nyersz, ha ez pozitív, azaz 1/x1+1/x2+1/x3<1, amit írtam korábban.

Illetve egyetlen eseménynél, mondjuk az elsőre fogadva:
p1*x1*penz1-penz1=penz1*(p1*x1-1)>0 azaz p1>1/x1 esetén lesz pozitív a várható nyereményed, ezt is írtam korábban.

Egyszerű dolgokról van szó, mégis meglepő, hogy szinte senki nem érti a tippmix mögötti matematikát. előzmény
Áhh,öreg vagyokj én már ezekhez. Nézzünk egy mai eseményt, negyed 8kor.
Bochum-Stuttgart

Hazai : 2.7x
Döntetlen : 2.85x
Vendég : 1.9x

Ha felteszek konkrétan 400at Hazaira, 500at döntetlenre, és
100at Vendégre, akkor mennyi a várható érték ? előzmény
Ha p1,p2,p3 a pontos valószínűségek, akkor:
2.7*400*p1+2.85*500*p2+1.9*100*p3-400-500-100=
1080*p1+1425*p2+190*p3-1000 ez a várható nyereményed.
Persze ez így nem sok infó, hiszen mi p1,p2,p3 értékeket
nem ismerjük.

ps. 1/2.7+1/2.85+1/1.9=1.25>1, azaz a tuti módszer nem müködik,
egyébként pont ennyi 1.2-1.25 körül szokott lenni a reciprokösszeg szinte mindig (ha három fogadás van), ez egyébként azt is jelenti, hogy átlagos nyereménye a feltett pénzek 20-25%-a a cégnek. előzmény
Köszi. Ez most a programom erre vonatkozólag :

előzmény

// TippMix.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
 #include <iostream.h>

int main(int argc, char* argv[])
{
        double oddsok[3];
        int k;
        double bet1,bet2,bet3;
        double prob1,prob2,prob3;
        double result;
        double result1,result2,result3;
        for(int i=0;i<3;i++)
        {
                cout <<"Kérem az ";cout << i+1; cout <<" oddsot : ";
                cin >> oddsok[i];
        }
        prob1=oddsok[0]/ (oddsok[0]+oddsok[1]+oddsok[2]);
        prob2=oddsok[1]/ (oddsok[0]+oddsok[1]+oddsok[2]);
        prob3=oddsok[2]/ (oddsok[0]+oddsok[1]+oddsok[2]);
        prob1=1/oddsok[0];
        prob2=1/oddsok[1];
        prob3=1/oddsok[2];
        cout <<prob1;
        cout <<prob2;
        cout <<prob3;

/*        for(i=0;i<3;i++)
        {
       
                cout << oddsok[i];
        }*/
        for(i=0;i<11;i++)
                for(int j=10-i;j>=0;j--)
                { bet1=100*i;
                        bet2=100*j;
                        bet3=1000-bet1-bet2;cout << "Tétek H,D,V : ";
                        cout <<bet1;cout <<"   ";cout << bet2; cout <<"    ";cout <<bet3;
                        cout << "    Varhato ertek : ";
                        result= bet1*prob1*oddsok[0]+bet2*prob2*oddsok[1]+bet3*prob3*oddsok[2]-1000;
                        cout << result;
                        cout <<"\n";
                }






        return 0;
       
}

Nyilván nem jó a leirtak ismeretében, hisz nekem a resultban lesz egy egyszwrüsités, a prob1-et annak reciprokával szorzom. De ezek szerint nem lehetne valami olyat elképzelni, hogy a valós p valószinüségeket az ismert oddsokhoz kötjük ? S ha nem ismerjük p-t, akkor tulajdonképpen azt sem tudjuk megmondani, hogy pl. a Stuttgart meccsen mondjuk melyik esemény bekövetkezésének legnagyobb a valószinüsége (hisz az odds nem határozza meg a valószinüséget)? Szerintem amelyik odds a legkisebb, az a legvalósznübb esemény. Nem lehet felvenni hasraütéssel valami egymással később arányban lévő p1 értéket, amiből majd aztán az oddsok ismeretében p2 és p3 megállapitható ? előzmény
Valóban nem jó, sőt elvi hibás is: 1/x1+1/x2+1/x3 lenne a valószínűségek összege, ez pedig olyan 1.2-1.25 a tippmixben, holott egynek kéne lennie!
Az viszont valóban igaz, hogy a legkisebb odds-ú eseményt tekinthetjük a legnagyobb valószínűségűnek, hiszen erre a cég 1/odds-ot tippeli és ez akkor a legnagyobb, ha az odds a legkisebb.

Egyébként dinamikusan frissítik az oddsokat a tippmixnél, és pont a leírt algoritmus szerint, a feltett pénzek arányában számolják ki az új oddsokat, így a Szerencsejáték rt. ezzel a játékkal elméletileg sem bukhat. előzmény
Oké, dinamikusan frissitenek, de a frissités már csak egy következő eseménynél lehet, nem igaz ?
Ha egyszer egy meccs oddsai le vannak irva, akkor az nem változhat... Max a lóversenypályán. Szóval a tippmixen mondjuk ha van két esemény (és az eseményekre még nincs fogadás, csak elemzik az eseményeket), és nahyjából ugyanannyinak gondolják at esélyeket (azaz a hazai mindkettőnál szerintük azonos valószinüséggel következik be, stb.), akkor az időben később fpgadható esemény oddsai a korábbi elméletileg a másik eseménnyel azonos valószinüségek a korábbi esemény konkrét fogadásainak megfelelően változnak ?
Pl. Chelsea - Manchester (hazai, dont, vendeg) 1.5 2.5 3.5
ls
Norwich - Liverpool 1.5 2.5 3.5,

akkor az időben a második meccs oddsai még a fogadási nap kiirása előtt modosulhatnak, az első meccs fogadása alapján ? előzmény
Ha fogadsz adott odds-al és nyersz, akkor a fogadott odds-al szoroznak, nem az aktuálissal. Nyilván azért nagy a mozgástere, hiszen olyan 25%-os profitnál nem kell állandóan módosítani az odds-okon, bár a nagyobb fogadólapokon szinte percenként, de van úgy, hogy másodpercenként módosul az odds.(többen fogadnak).

Nyilván egy korábbi meccs ilyen szempontból nem lényeges csak az a fontos, hogy milyen arányban tippelnek a fogadók. Kivéve, ha a két tipp összefügg, mert, akkor kötéstiltás van. Nem lehet egyszerre fogadni arra, hogy a Ferrari nyeri a futamot és arra, hogy Schumacher nyeri a futamot. előzmény
Köszi. S a leirt kodomat a result résznél hogyan módositanád, hogy a célomnak megfeleljen ? Én arra akarok játszani, hogy a 3 esemény közül csak kettőre fogadok, és remélem, nem a harmadik következik be. Több, mint 50 százalék ilyenkor az esélyem a nyerésre, de nem 100 %. előzmény
számszerüsiteni akarok a dolgokat. Szóval nem lehetne valamit kezdeni az ismeretlen valószinüségekkel ? előzmény
Nem kell ide egy játékra számítógépes kód, hiszen egy program sem tud kiszámolni egy ismeretlen valószínűséget. Szóval egy illetve három játékra már elmondtam mi egy optimális stratégia, ez van két tippnél is:

első kettőre fogadva csak a cég oddsait felhasználva 1/x1 illetve 1/x2 legyen a két tippre fogadott pénz, ekkor 1-et nyerünk 1-p3 valószínűséggel és 1/x1+1/x2-t feltett pénzt elveszítjük, azaz várható nyeremény:
1-p3-1/x1-1/x2 , ha ez pozitív akkor nyersz. előzmény
Köszi előzmény
Oszd meg másokkal is!