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): 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, p): single_prob = probability_single_person(flips_per_person, min_heads, p) return 1 - (1 - single_prob) ** num_people # Parameters for different strategies 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 # Probability for a fair coin (pure chance) p_fair = 0.5 probability_fair = probability_at_least_one_person(num_people, flips_per_person, min_heads, p_fair) print(f"Probability with fair coin: {probability_fair:.4f} or {probability_fair * 100:.2f}%") # Probability for a skilled trader with better odds (e.g., 60% success rate) p_skilled = 0.6 probability_skilled = probability_at_least_one_person(num_people, flips_per_person, min_heads, p_skilled) print(f"Probability with skilled trader: {probability_skilled:.4f} or {probability_skilled * 100:.2f}%") # Probability for a hedged strategy (e.g., 70% success rate) p_hedged = 0.7 probability_hedged = probability_at_least_one_person(num_people, flips_per_person, min_heads, p_hedged) print(f"Probability with hedged strategy: {probability_hedged:.4f} or {probability_hedged * 100:.2f}%") # Probability for an ETF with diversified risk (e.g., 55% success rate) p_etf = 0.55 probability_etf = probability_at_least_one_person(num_people, flips_per_person, min_heads, p_etf) print(f"Probability with ETF: {probability_etf:.4f} or {probability_etf * 100:.2f}%")