Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def factorial(n):
- if n == 0:
- return 1
- else:
- return n * factorial(n - 1)
- def combination(n, r):
- return factorial(n) / (factorial(r) * factorial(n - r))
- def calculate_win_probability(wr, wins, losses, print_result=True):
- p = wr / 100.0 # probability of winning a game
- q = 1 - p # probability of losing a game
- prob = 0
- for l in range(losses):
- total_games = wins + l
- # probability of getting 'wins' successes in 'total_games' trials
- partial_prob = combination(total_games - 1, wins - 1) * (p ** wins) * (q ** l)
- prob += partial_prob
- if print_result:
- print(f"The chance of getting {wins} wins before {losses} losses with a win rate of {wr}% is {prob * 100:.2f}%")
- return prob
- def calculate_average_attempts(wr, wins, losses, print_result=True):
- p = calculate_win_probability(wr, wins, losses, print_result=False)
- if p == 0:
- res = float('inf')
- res = 1 / p
- if print_result:
- print(f"On average, with a win rate of {wr}%, you need to attempt {res:.2f} times to get {wins} wins before {losses} losses.")
- return res
- def print_reddit_table(wins, losses, start, end):
- print("| Win Rate | Success Rate | Average Attempts |")
- print("|--------------|------------------|------------------|")
- for wr in range(start, end+1): # Loop over win rates
- success_rate = calculate_win_probability(wr, wins, losses, print_result=False) * 100
- average_attempts = calculate_average_attempts(wr, wins, losses, print_result=False)
- print(f"| {wr}% | {success_rate:.2f}% | {average_attempts:.2f} |")
- wr = 64 # Set the win rate
- wins = 12
- losses = 3
- calculate_win_probability(wr, wins, losses)
- calculate_average_attempts(wr, wins, losses)
- start = 40
- end = 75
- print_reddit_table(wins, losses, start, end)
Advertisement
Add Comment
Please, Sign In to add comment