One Million Simulations

Forum rules
Please DO NOT POST BUGS on this forum. Please report (and vote) bugs on : https://boardgamearena.com/bugs
Post Reply
User avatar
dethwing
Posts: 18
Joined: 27 January 2012, 19:30

One Million Simulations

Post 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.
User avatar
dethwing
Posts: 18
Joined: 27 January 2012, 19:30

Re: One Million Simulations

Post 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%
User avatar
dethwing
Posts: 18
Joined: 27 January 2012, 19:30

Re: One Million Simulations

Post 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.
Carlitosxd12
Posts: 1
Joined: 04 October 2024, 03:59

Re: One Million Simulations

Post by Carlitosxd12 »

Interesting research you did!!! :lol:
User avatar
BadPritt
Posts: 2
Joined: 08 September 2012, 18:40

Re: One Million Simulations

Post 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.
User avatar
dethwing
Posts: 18
Joined: 27 January 2012, 19:30

Re: One Million Simulations

Post 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.
User avatar
dethwing
Posts: 18
Joined: 27 January 2012, 19:30

Re: One Million Simulations

Post 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.
Post Reply

Return to “Dracula vs Van Helsing”