[ALG] Simuleren van kansspel via optimale strategie

Pagina: 1
Acties:

  • kikibu
  • Registratie: April 2003
  • Laatst online: 00:44
Beste medetweakers,

samen met een vriendin ben ik bezig met een profielwerkstuk over Wiskunde. In het bijzonder kansspelen en de optimale strategiën die hierbij horen.

We hebben als eerste spel om te onderzoeken Weekend Miljonairs uit de gulden tijd gekozen. We hebben bij het bepalen ook het nut en het verwachte nut meeberekend, om zo een realistisch beeld te creëren. Onze optimale strategie (misschien ook nog tips?) kun je in hier vinden.

Het komt in het kort op het volgende neer:
- Eerste vijf vragen een kans van 99/100 per vraag op een goed antwoord
- Volgende vijf vragen een kans van 3/5
- De laatste vijf vragens een kans van 3/10

Hierbij komt het erop neer dat wanneer je als speler met deze winstkansen volgens de optimale strategie speelt, de volgende handelingen moet doen:
- Wanneer je bij de 4000 vraag bent beland, moet je stoppen
- Als je dus niet volgens deze optimale strategie hebt gespeeld en toch door bent gegaan tot 32000 en je bent bij de 64000 vraag, dan moet je iig doorspelen (logisch -> vastgepint bedrag)

Nou willen wij een flink aantal potjes simuleren aan de hand van deze strategie. Onze vraag is, ook omdat wij totaal geen ervaring hebben met simuleren in Excel of programmeren, hoe we dat moeten aanpakken.

Dus heeft hier iemand ideeën over? Want 1000 potjes met de hand nagaan is wel een heel groot werk :P

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Met een simpel stukje VBA in een loop kun je natuurlijk 1000 of 100000 potjes simuleren, maar net zo handig is om het gewoon feitelijk uit te rekenen aan de hand van de cumulatieve kansen. Maar imho klopt je strategie al niet. Ik snap je sheetje ook niet helemaal, maar het lijkt erop dat je de mogelijke winst gelijk stelt aan het niet beantwoorden van de vraag. IIg heb je bij de 4000 € vraag 60% kans om 2000 € te winnen en 40% kans om 1000 € te verliezen. Doorgaan dus. 8000 €? 60% op 4000€ of 40% op -3000 € etc.

Als ik het in een excelsheetje stop en uitga van pure kansberekening en een voldoende groot aantal spelronden kon ik uit op een winstmaximalisatie bij de € 64000 euro vraag.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • kikibu
  • Registratie: April 2003
  • Laatst online: 00:44
Niesje schreef op zondag 15 mei 2005 @ 15:06:
Met een simpel stukje VBA in een loop kun je natuurlijk 1000 of 100000 potjes simuleren, maar net zo handig is om het gewoon feitelijk uit te rekenen aan de hand van de cumulatieve kansen. Maar imho klopt je strategie al niet. Ik snap je sheetje ook niet helemaal, maar het lijkt erop dat je de mogelijke winst gelijk stelt aan het niet beantwoorden van de vraag. IIg heb je bij de 4000 € vraag 60% kans om 2000 € te winnen en 40% kans om 1000 € te verliezen. Doorgaan dus. 8000 €? 60% op 4000€ of 40% op -3000 € etc.

Als ik het in een excelsheetje stop en uitga van pure kansberekening en een voldoende groot aantal spelronden kon ik uit op een winstmaximalisatie bij de € 32000 euro vraag.
Als ik naar je redenering kijk, is die niet gelijk aan de onze. Dat komt (misschien) doordat je de bedragen door elkaar haalt en niet van het nut** van een bepaald bedrag uitgaat wat je wint, want je verlies eigenlijk niets. Maar dat vind ik moeilijk te achterhalen, ik kan wel zeggen hoe wij hebben geredeneerd en hebben geleerd te redeneren bij dit spel op de Universiteit van Twente.

Wij zijn van achter naar voren gaan werken, dat wil zeggen we beginnen bij de laatste vraag:
[list]• Je hebt hier 3/10 kans om een goed antwoord te geven en dan win je een 'nut' van 13,816
• Je hebt hier 7/10 kans om een fout antwoord te geven en dan win je een 'nut' van 10,373
• Je hebt ook de mogelijkheid om te stoppen, hierbij win je een 'nut' van 13,122

Vervolgens voer je dus de volgende berekening (= dk in de sheet)
(13,186 * 3/10) + (10,373 * 7/10) = 11,406

Vervolgens ga je dit verwachte nut bij doorspelen vergelijken het nut bij stoppen en kom je er dus achter dat het nut van stoppen veel hoger is. Dus het optimale is om op dat moment te stoppen, als je er gekomen bent.

Daarna ga je naar de vraag daarvoor en zo bereken je steeds meer terug tot de eerste vraag. Zo hebben wij het gedaan en dit lijkt mij een behoorlijk accurate berekeningswijze. Als je nog iets niet snapt, moet je gewoon nog even vragen :)

**Het verschil tussen het nut van 1.000.000 en 500.000 is niet zo groot als die tussen 10 en 20, dit is natuurlijk logisch, want je vergelijkt het eigenlijk met het 'bedrag 0'.

[ Voor 4% gewijzigd door kikibu op 15-05-2005 16:34 ]


Verwijderd

In feite is de openingspost van dit topic een script request ( Zie FAQ).

Afgezien daarvan ben ik het niet eens met je manier van berekenen zoals je die laat zien in je Excel sheet. Hetgene dat ik niet begrijp is waarom je de natuurlijke logaritme (LN) van invoert in je formules.

Het te verwachten bedrag dat je per vraag kunt winnen is gelijk aan:
bedrag[sub]verwacht[/sub] = p[sub]goed[/sub]*bedrag[sub]goed[/sub] + p[sub]fout[/sub]*bedrag[sub]fout[/sub]

Zolang als dit bedrag hoger is dan het bedrag dat je krijgt als je stopt, moet je doorspelen.

Afgaande op mijn eigen berekening is het te verwachten bedrag hoger dan het bedrag dat je krijgt als je stopt tot en met de vraag voor € 125.000,- vraag. Tot aan die vraag moet je dus doorspelen als je het puur statistisch bekijkt.

Graag hoor ik je reactie op mijn commentaar. Als je interesse hebt in mijn excel bestand dan moet je me maar even mailen (zie mijn profiel).

  • kikibu
  • Registratie: April 2003
  • Laatst online: 00:44
Verwijderd schreef op zondag 15 mei 2005 @ 18:05:
In feite is de openingspost van dit topic een script request ( Zie FAQ).

Afgezien daarvan ben ik het niet eens met je manier van berekenen zoals je die laat zien in je Excel sheet. Hetgene dat ik niet begrijp is waarom je de natuurlijke logaritme (LN) van invoert in je formules.

Het te verwachten bedrag dat je per vraag kunt winnen is gelijk aan:
bedrag[sub]verwacht[/sub] = p[sub]goed[/sub]*bedrag[sub]goed[/sub] + p[sub]fout[/sub]*bedrag[sub]fout[/sub]

Zolang als dit bedrag hoger is dan het bedrag dat je krijgt als je stopt, moet je doorspelen.

Afgaande op mijn eigen berekening is het te verwachten bedrag hoger dan het bedrag dat je krijgt als je stopt tot en met de vraag voor € 125.000,- vraag. Tot aan die vraag moet je dus doorspelen als je het puur statistisch bekijkt.

Graag hoor ik je reactie op mijn commentaar. Als je interesse hebt in mijn excel bestand dan moet je me maar even mailen (zie mijn profiel).
Op welke winstkansen baseer je deze berekening? Dit is namelijk wel interessant.

Ik neem de natuurlijke logaritme ten eerste omdat ik dit een 'gemakkelijke' nutsfunctie is, ten tweede omdat wij hier bij een 7-delige masterclass Wiskunde op de UT ook mee werkten en ten derde omdat ik als ik de keus had om een kans op 1.000.000 te winnen, maar ook een kans om terug te vallen op 32.000 en een mogelijkheid om direct 500.000 mee te nemen, dit zou doen. Dit heeft natuurlijk met het nut te maken van deze bedragen, want 1000.000 is 'erg veel' maar 500.000 is ook 'erg veel'. En je begint met niets, vandaar.

Hopelijk verklaart dit wat.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je berekening klopt wel, alleen die waardering vind ik nogal twijfelachtig. In zijn algemeenheid klopt het natuurlijk dat de waarderingsvermeerdering afneemt naarmate het bedrag toeneemt maar zo extreem als jij het stelt is zelden waar: er zullen weinig mensen te vinden zijn die 50 tov 32000 waarderen in een verhouding van 1 op 4.

Ondanks het feit dat je met niets begint is kun je je kansen bij iedere vraag wel degelijk analyseren in termen van verlies of winst. Elke vraag levert een kans P op winst + vervolgkansen en een kans 1-P op een verlies van reeds behaalde bedrag-terugvalbedrag. Uiteindelijk levert dat dezelfde staatjes op. Dat mensen verlieskansen en winstkansen anders waarderen is meer iets voor de psychologie dan voor de kansrekening. ;) De berekening van maj_veld is daarom niet helemaal compleet, omdat in de afweging om door te spelen ook nog de kans meegenomen moet worden om verder te kunnen spelen naar de volle pot. Verder komt het allemaal op hetzelfde neer.

De resultaten over 100000 potjes:


149,51 49,50 3,87
2 98,03 97,99 4,51
3 242,60 242,48 5,35
4 480,34 480,01 5,97
5 951,04 950,55 6,57
6 1521,63 1518,69 6,96
7 1978,11 1977,09 7,04
82388,94 2397,66 7,00
92799,76 2816,40 6,91
103243,46 3260,36 6,82
114032,24 4061,32 6,84
124007,58 4049,93 6,84
133840,51 3811,90 6,83
143670,70 3686,24 6,83
15 3538,02 3550,76 6,83


Hierin is de eerste kolom het vraagnummer waarna iemand per definitie stopt, de tweede kolom het geldbedrag wat hij gemiddeld per ronde wint volgens de kansberekening, derde kolom gemiddelde winst per ronde in een simulatie over 100000 ronden en de vierde kolom gemiddeld nut =ln(fl) per ronde in dezelfde simulatie..

[ Voor 26% gewijzigd door Lustucru op 16-05-2005 01:10 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • kikibu
  • Registratie: April 2003
  • Laatst online: 00:44
Ik had even wat tijd nodig om je post te begrijpen, maar volgens mij heb ik nu door waar wij verschillen.

Jij berekent het nut van de verwachtingswaarde uit en ik de verwachtingswaarde van het nut.

Voorbeeldje: als je 100 zeker mee naar huis kan nemen, maar ook een 50/50 kans hebt op 200 is de verwachtingswaarde 100 en het nut van die twee waarden zijn dan ook gelijk aan elkaar. Maar als je het nut van de drie mogelijkheden berekent:
0 = (ln0 kan niet, maar we nemen hier 0 voor)
100 = 4,6
200 = 5,3

Als je dan gaat vergelijken, blijkt de verwachtingswaarde van het nut om door te spelen anders te zijn dan het nut om te stoppen. Hier hebben wij gebruik gemaakt. Ik weet dat ln (x) een discutabele nutsfunctie is, maar dit is gewoon voorbeeld.

Maar mijn vraag was eigenlijk, hoe kunnen wij het gemakkelijkst potjes WM simuleren aan de hand van die theorie met als uitkomst het gemiddelde winbedrag bijvoorbeeld. Wat is hier de handigste methode voor? Kan dit ook in Excel?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ja, het kan prima in Excel, al zul je niet aan een paar regels VBA ontkomen. Het makkelijkste lijkt mij (en zo heb ik het ook gedaan) een paar arrays declareren, die vullen met kansen en winstbedragen en dan in een simpele for ... next lus 100000 keer 15 vragen langslopen.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
For i = 1 To crondes
       For j = 1 To 15
            dev = vragen(j)
            If Rnd() >= dev.kans Then
                For k = j To 15
                    result(k) = result(k) + dev.verliesbedrag
                    resultln(k) = resultln(k) + Log(dev.verliesbedrag)
                Next k
                Exit For
            Else
                result(j) = result(j) + dev.winbedrag
                resultln(j) = resultln(j) + Log(dev.winbedrag)
            End If
        Next j
Next i

Een andere methode is om één spelletje in een sheet te gooien en dat (ook met VBA) 100000 keer te laten berekenen.

En nog makkelijker: gewoon uitrekenen:
GemiddeldWinbedrag voor vraag K:
GW=Q*(P*PrijsCorrect+(1-P)*PrijsIncorrect) + O

waarin
Qk=Pk-1 * Qk-1 of
P1*P2*.....*Pk-1

en

Ok=opbrengst van eerdere verliezen:
Ok-1 + Qk-1*(1-Pk-1)*PrijsIncorrectk-1 oftewel
(1-P1)*PI1+P1*(1-P2)*PI2+.........+Pk-2(1-Pk-1)*PIk-1

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • kikibu
  • Registratie: April 2003
  • Laatst online: 00:44
Niesje schreef op maandag 16 mei 2005 @ 15:52:
Ja, het kan prima in Excel, al zul je niet aan een paar regels VBA ontkomen. Het makkelijkste lijkt mij (en zo heb ik het ook gedaan) een paar arrays declareren, die vullen met kansen en winstbedragen en dan in een simpele for ... next lus 100000 keer 15 vragen langslopen.
Een andere methode is om één spelletje in een sheet te gooien en dat (ook met VBA) 100000 keer te laten berekenen.

En nog makkelijker: gewoon uitrekenen:
GemiddeldWinbedrag voor vraag K:
GW=Q*(P*PrijsCorrect+(1-P)*PrijsIncorrect) + O

waarin
Qk=Pk-1 * Qk-1 of
P1*P2*.....*Pk-1

en

Ok=opbrengst van eerdere verliezen:
Ok-1 + Qk-1*(1-Pk-1)*PrijsIncorrectk-1 oftewel
(1-P1)*PI1+P1*(1-P2)*PI2+.........+Pk-2(1-Pk-1)*PIk-1
Ok bedankt. Ik begrijp er echter weinig van (ja weet ik --> noob). Die code begrijp ik half.

1e vraag: Wat is VBA?
2e vraag: Die code, is die voor excel bedoelt? (ik herken excel commands)
3e vraag: Het tweede voorbeeld snap ik niet goed

Wat ik wel weet, is dat je eigenlijk maar tot de 8e vraag (4000 vraag) moet doorrekenen, want als je via onze strategie speelt en je bij die vraag komt, stop je altijd.

Ik zit nu echt te denken dat ik me eerst echt moet gaan verdiepen in programmering en / of scripts omdat ik anders er toch niets van begrijp en ik mij er ook niet voor kan verantwoorden (profielw). Of zie ik het helemaal verkeerd?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Dat zie je goed :)
VBA is de programmeer/macro taal voor msoffice, een afgeleide van VB. WAt je wilt is tamelijk basic en niet erg spannend en moet in een dagje wel te leren zijn. Er zijn hier ook wel topics over te vinden en die verwijzen je weer naar VBA tutorials. Ik zou iig wel doorrekenen naar vraag 15, want dan zie je dat jullie optimale strategie kanstechnisch gezien geen winstmaximalisatie inhoudt, maar wel maximalisatie van het -arbitraire- nut.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1