Irhad Fejzic - 1 year ago 130
Python Question

# Odds of coin flipping heads 10 times in a row

I can easily find the number of heads out of 100 and the chances of coin flipping heads out of 100 flips. That code is below. However, I can't figure out how to easily get the odds of coin flipping heads 10 times in a row.

``````import random

n = int(input("Enter the number of flips: "))

sum = 0
tails = 0
for n in range(1, n + 1):
number = random.randrange(0,2)
if number == 0:
else:
tails += 1
sum += number
odds = sum / n

print("No. of tails: ", tails)
print("Odds: ", odds)
``````

You need to flip the coin 10 times, but only report success if they all come up heads. Do this with reverse logic: if any one comes up tails, set your flag to False.

``````all_heads = True
for i in range(10):
number = random.randrange(0,2)
if number != 0:
``````

Or, more succinctly

``````all_heads = True
for i in range(10):
``````

... and even more pythonic

``````all_heads = all(random.randrange(0,2) == 0 for i in range(10))
``````

Whichever you choose, you'll need to do it enough times to approximate a statistical universe. Since you expect only one success in 1024 trials, you'll want on the order of 10,000 - 100,000 trials. Count the number of successes, divide by the number of trials. You already know how to do that part.

SPOILER:

Given the length of the run of heads, n, and the number of trials, this reduces to

``````print (sum(all(random.randrange(0,2) for _ in range(n)) \
for _ in range(trials))                       \
/ float(trials) )
``````

Welcome to Python. :-)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download