Page 1 of 1

One Million Simulations

Posted: 17 October 2024, 15:44
by dethwing
After reading some of the posts, I too was curious if the winning conditions were balanced. So I wrote some code to run simulations.
This assumes equal strength of players, and an equal chance of winning each zone. Basically, I just flipped a coin until one side won, or 25 flips (And then Drac wins). And here's what I got:

Dracula Wins : 526,241 (52.62%)
Van Helsig Wins : 473,759 (47.38%)

Dracula has a statistically more likely chance of winning (Between players of equal Skill).
Was this due to random coin flips:

Luck Check
Dracula Wins : 10,087,327 (50.02%)
Van Helsig Wins : 10,079,901 (49.98%)

Dracula was very slightly more lucky in winning more games, but not enough to impact the results.

Types of wins:
Damage : 473,759 (47.38%)
Zone 1 : 145,927 (14.59%)
Zone 2 : 122,832 (12.28%)
Zone 3 : 99,369 (9.94%)
Zone 4 : 78,690 (7.87%)
Zone 5 : 61,517 (6.15%)
End of Game : 17,906 (1.79%)

As you would expect, Drac's wins are more likely to come earlier, just by the nature of the rules.

Re: One Million Simulations

Posted: 17 October 2024, 16:00
by dethwing
Follow Up -- Luck Factor in Each Round

I calculated the margin of Dracula vs VH wins in each simulation.

In every single game that Dracula out flipped VH by at least 2....Dracula wins. That's 38.25% of all simulations.
You might think it would the same on the other side, but no. In every game VH out flips Drac by at least SEVEN, VH wins.
Yes, VH can win 6 more games and still lose.

Dracula Margin - Win %
-6 : 0.37%
-5 : 1.06%
-4 : 3.44%
-3 : 6.40%
-2 : 15.45%
-1 : 34.62%
0 : 54.70%
+1 : 75.64%

Re: One Million Simulations

Posted: 18 October 2024, 16:19
by dethwing
Actually, if you just re-classify end-of-game it becomes extremely close.

If we give the end-of-game result to VH it moves to 49.17% - 50.83%. Practically a dead heat.

And if you just call that a tie, it moves to 48.24 - 51.76

Something to think about.

Re: One Million Simulations

Posted: 01 November 2024, 01:51
by Carlitosxd12
Interesting research you did!!! :lol:

Re: One Million Simulations

Posted: 19 November 2024, 20:26
by BadPritt
In which way did you "re-classify end-of-game" and could you elaborate a little bit on your used algorithm?
dethwing wrote: 18 October 2024, 16:19 Actually, if you just re-classify end-of-game it becomes extremely close.

If we give the end-of-game result to VH it moves to 49.17% - 50.83%. Practically a dead heat.

And if you just call that a tie, it moves to 48.24 - 51.76

Something to think about.

Re: One Million Simulations

Posted: 21 November 2024, 18:33
by dethwing
By that I mean, if after 25 games (5 rounds) neither side has met their victory condition.

Current rules give this to Dracula, but I'm arguing it should go to VH.

Re: One Million Simulations

Posted: 21 November 2024, 18:40
by dethwing
Here's the code I used. I don't know how well it will show up. Running with Python :

for x in list(range(1,1000001)):
Winner = "Unknown"
Zone_1 = 0
Zone_2 = 0
Zone_3 = 0
Zone_4 = 0
Zone_5 = 0
Damage = 0
Done = 0
y = 1
while Done == 0:
if y == 26:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,25])
Done = 1
else:
Random = random.random()
if Random < .5:
Damage = Damage + 1
if Damage == 12:
Winner = "Van_Helsig"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
else:
if y % 5 == 1:
Zone_1 = Zone_1 + 1
if Zone_1 == 4:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
elif y % 5 == 2:
Zone_2 = Zone_2 + 1
if Zone_2 == 4:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
elif y % 5 == 3:
Zone_3 = Zone_3 + 1
if Zone_3 == 4:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
elif y % 5 == 4:
Zone_4 = Zone_4 + 1
if Zone_4 == 4:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
elif y % 5 == 0:
Zone_5 = Zone_5 + 1
if Zone_5 == 4:
Winner = "Dracula"
Result.append([x,Winner,Zone_1,Zone_2,Zone_3,Zone_4,Zone_5,Damage,y])
Done = 1
y = y + 1


BadPritt wrote: 19 November 2024, 20:26 In which way did you "re-classify end-of-game" and could you elaborate a little bit on your used algorithm?
dethwing wrote: 18 October 2024, 16:19 Actually, if you just re-classify end-of-game it becomes extremely close.

If we give the end-of-game result to VH it moves to 49.17% - 50.83%. Practically a dead heat.

And if you just call that a tie, it moves to 48.24 - 51.76

Something to think about.