Ich habe ein seltsames Problem mit einer Monte-Carlo-Simulation, die ich gebaut habe. Es ist eine geschachtelte Schleife, um den erwarteten Wert der Investitionen zu berechnen (eigentlich Poker Turniere). Nehmen wir zum Beispiel an, dass es sich um Heads-Up-Pokerturniere handelt, die einem Münzwurf gleichkommen. Nehmen wir an, dass wir einen ROI von 25% pro Münzwurf haben und der Buy-In eins ist, also der EV nach 100 (500, 1000) Coin-Flips 25 (125, 250) Einheiten ist. Die Simulation gibt jedoch 24,6, 123,6 bzw. 246 zurück. Die kritische Linie im Code ist hier:Monte-Carlo-Simulation in VBA unterschätzt konsequent den wahren Wert
Randomize
randomnumber = Rnd()
If randomnumber > adjustedITM Then
MC_array(m, n) = -tournamentvariables(k, 6)
Else:
Randomize
MC_array(m, n) = CDec(tournamentstructures(Int(Rnd() * (tournamentvariables(k, 7)) + 1), k) * tournamentvariables(k, 6) * (1 - tournamentvariables(k, 5)) * tournamentvariables(k, 2) - tournamentvariables(k, 6))
End If
Die 2. MC_array (m, n) die kritische Code-Zeile ist. Es gibt den Nettogewinn, wenn der Spieler gewinnt. Im Falle eines Münzwurfs ist dies eine Einheit. Wenn ich die zweite Zeile in
ändernDie Ergebnisse sind korrekt. Der Code nach dem 2. MCarray simpliefies für das Coin-Flip zu:
CDec(tournamentstructures(Int(Rnd() * (tournamentvariables(k, 7)) + 1), k) * tournamentvariables(k, 6) * (1 - tournamentvariables(k, 5)) * tournamentvariables(k, 2) - tournamentvariables(k, 6))
=
CDec(tournamentstructures(1,1) * 1 * (1 - 0%) * 2 - 1)
So ist es genau das gleiche wie ein. Das Array turnierstructures() hat die Größe (1,1), also kann es nichts einlesen. Ich habe überprüft, dass alle Ergebnisse ganze Zahlen sind (wie bei einem Münzwurf kann man nur eine Einheit gewinnen oder verlieren), vermute ich stark der Zufallszahlengenerator ist irgendwie vorgespannt.
Ich erklärte so ziemlich alles im Code als Variante und schloss das zweite Randomize aus, ohne dass es die Verzerrung änderte. Also Leute, was geht hier hin?
danke, das ist genau was passiert ist! – IschaIschratioh