Python coin-toss
Posted
by
Andy
on Stack Overflow
See other posts from Stack Overflow
or by Andy
Published on 2012-07-08T03:01:28Z
Indexed on
2012/07/08
3:15 UTC
Read the original article
Hit count: 208
i am new to Python, and i can't wrap my head around this. I have following function defined:
def FlipCoins(num_flips):
heads_rounds_won = 0
for i in range(10000):
heads = 0
tails = 0
for j in range(num_flips):
dice = random.randint(0,1)
if dice==1: heads += 1
else: tails += 1
if heads > tails: heads_rounds_won += 1
return heads_rounds_won
Here is what it should do (but apparently doesn't): flip a coin num_flip times, count heads and tails, and see if there are more heads than tails. If yes, increment head_rounds_won by 1. Repeat 10000 times.
I would assume that head_rounds_won will approximate 5000 (50%). And it does that for odd numbers as input. For example, 3, 5 or 7 will produce about 50%. However, even numbers will produce much lower results, more like 34%. Small numbers especially, with higher even numbers, like for example 800, the difference to 50% is much narrower.
Why is this the case? Shouldn't any input produce about 50% heads/tails?
© Stack Overflow or respective owner