VBS: gokspel theorie

Status
Niet open voor verdere reacties.

lollige

Gebruiker
Lid geworden
13 nov 2005
Berichten
951
Hoi allemaal,
Je hebt zo'n gokspelletje waarbij je een bepaald bedrag inzet, en een kans van 1 op 2 hebt dat je het dubbel terug krijgt en een kans van 1 op 2 dat je het verliest.

Nou heb ik ooit bedacht dat als wanneer je verliest je je inzet de volgende keer verdubbelt je altijd positief komt te staan. Wat je precies moet doen als je wint weet ik niet maar in mijn script zou je inzet gehalveerd moeten voor de volgende keer, tenzij je inzet al lager dan 2000 is (we willen natuurlijk wel wat winst maken).

Nou ben ik te lui om op papier te gaan bewijzen dat mijn theorie niet klopt (lijkt mij) dus leek dit mij weer een goede reden om met vbs te gaan klooien.

Mijn script:

Code:
dim money, bet, win
money = 100000
bet = 5000
randomize

while money > 5 & money < 300000
win = Int( 2 * Rnd )
money = money - bet
msgbox money

Select Case win

Case 1
money = money + (bet * 2)
if bet > 2000 then bet = bet / 2

Case 0
bet = bet * 2

End Select

wend

msgbox money

Ik heb eerst een hele tijd met ifjes zitten klooien, toen dat niet lukte heb ik er een select case ding van gemaakt, maar ik kom niet veel verder.

Wat hij zou moeten doen:
er word een geld bedrag vastgesteld (MONEY)
Er word een inzet bedrag vastgesteld (BET)
een willenkeurig nummer kiezen, 0 of 1, (WIN)
In het geval dat dat een 1 word moet het ingezette bedrag dubbel worden terug betaald.
als dan ook nog eens de inzet groter dan 2000 was moet de inzet voor de volgende keer gehalveerd worden.
In het geval dat dat een 0 word moet het bedrag dat de volgende keer word ingezet verdubbeld worden.
Hierna word alles herhaald vanaf het nummer kiezen, tenzij het geldbedrag dat je bezit kleiner dan 5 of groter dan 300000 is. In dit geval wil ik graag het resultaat zien.

Wat hij doet:
Voorbeeld getallenreeks:
95000 (-5000 dus, klopt)
85000 (-10000 dus, klopt ook)
100000 (het had +20000 of -20000 moeten zijn, maar het is +15000)
107500 (dit kopt weer, 15000/2 = 7500 en dat is er dus bij opgeteld)
102500 (klopt weer niet, de vorige keer was er gewonnen dus moet de 7500 door 2 worden gedeeld, = 3750, dan had dat er vanaf moeten worden getrokken maar er is 5000 af gehaald..)
92500 (klopt weer, 5000 *2 = 10000 en dat is er dus afgehaald)
107500 (10000 * 2 = 20000 en 92500 + 20000 = geen 107500 dus klopt weer niet.)
97500
112500
102500
82500
112500
92500
52500
-27500(Huh? Hoe komen we ineens in de min? en zou dan niet het script moeten worden gestopt?)
92500
152500
en nog veel meer getallen, wisselend van negatief tot positief.
ik heb hem met het taakbeheer afgesloten.

Wat klopt er niet aan mijn script?
 
Waarom lijkt dit op een huiswerkvraag? :confused:

Hoedanook, ik heb al redenlijk wat dingen geprobeert (maar voornamelijk het verwisselen van verschillende dingen waardoor net wat anders gebeurt, maar hij het uiteindelijk toch niet doet), ben van een reeks ifjes overgegaan op select case in de hoop dat het daarmee wel lukt, heb diverse pagina's opgezocht over het gebruik van de while, if, random en case select codes/functies en begin nu een beetje moe te worden en hoop dat iemand met wat meer ervaring in dit soort dingen mij kan zeggen wat voor fout ik gemaakt heb. (wat een lange zin :shocked:)
 
De reden waarom 'ie er bij een negatief getal niet mee stopt, is omdat je na de msgbox nog wat doet met MONEY waardoor de waarde weer binnen het bereik 5-300000 komt waardoor je niet uit de while loop gaat.

Daarnaast is je voorwaarde in je while loop niet goed. Ipv & moet je AND gebruiken

Kortom, je msgbox stond gewoon verkeerd. Je liet MONEY zien na het inzetten ipv na de uitslag. Als na het inzetten MONEY negatief werd (wat je zag) en je daarna won, dan kwam je weer positief en ging je programma gewoon door. Zet je msgbox maar eens direct boven de wend, verander die andere fout en het gaat dan een stuk beter. Ik heb het geprobeerd en mee zitten rekenen en na 10 stappen klopte het nog precies.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan