import math def binomial_coefficient(n, k): return math.factorial(n) // (math.factorial(k) * math.factorial(n - k)) def probability_single_person(n, k): p = 0.5 # probability of heads for a fair coin probability = 0 for i in range(k, n + 1): probability += binomial_coefficient(n, i) * (p ** i) * ((1 - p) ** (n - i)) return probability def probability_at_least_one_person(num_people, flips_per_person, min_heads): single_prob = probability_single_person(flips_per_person, min_heads) return 1 - (1 - single_prob) ** num_people # Parameters num_people = 100 # number of people flips_per_person = 10 # number of coin flips per person min_heads = 9 # minimum number of heads for success # Calculate the probability probability = probability_at_least_one_person(num_people, flips_per_person, min_heads) print(f"The probability that at least one person out of {num_people} gets heads at least {min_heads} times is approximately {probability:.4f} or {probability * 100:.2f}%")