Skip to content

Instantly share code, notes, and snippets.

@jarshwah
Created September 1, 2015 01:50
Show Gist options
  • Save jarshwah/1c48118359fad5d93b88 to your computer and use it in GitHub Desktop.
Save jarshwah/1c48118359fad5d93b88 to your computer and use it in GitHub Desktop.
import random
def simulate(bank=1000.0, percentage=2.0, races=10000):
min_odds = 2.4
max_odds = 13.0
sample_odds = [3,6,21,5.5,5.5,5,2.8,18,8,6.5,4,3.3,2.4,21,5,3.2,3.3,6.5,5.5,16,3.4,26]
original_bank = bank
want_to_win = (percentage / 100) * bank
races_run = 0
wins = 0
losses = 0
for race_number, race in enumerate(range(races + 1)):
races_run = races_run + 1
deficit = max(original_bank - bank, 0)
odds = round(random.uniform(min_odds, max_odds), 2)
#odds = float(random.choice(sample_odds))
bet = round((want_to_win + deficit) / odds, 2)
if bet > bank:
print("We cant bet on Race %d, we're out of money." % race_number)
break
bank = bank - bet # place the bet
#won = random.choice(range(1, 9)) == 1 # uses number of runners to calculate win odds
won = win_or_lose(odds) # uses odds to calculate chances of winning
if won:
wins = wins + 1
winnings = want_to_win + deficit
bank = bank + winnings
print("Race %d. Odds %.2f. Bet $%.2f. WON $%.2f" % (race_number, odds, bet, winnings))
else:
losses = losses + 1
print("Race %d. Odds %.2f. Bet $%.2f. LOST." % (race_number, odds, bet))
print("Current Bank: $%f" % bank)
print("------------------------------------------------")
print("Finished Simulation after %d races." % (races_run))
if losses == 0:
# dont divide by zero
losses = 1
win_percent = round((wins / losses) * 100, 2)
print("Wins %d, Losses: %d, Win %%: %%%.2f " % (wins, losses, win_percent))
winnings = bank - original_bank
print("|Bank: $%.2f. Winnings: $%.2f" % (bank, winnings))
if bank > original_bank:
print("Success")
return True
else:
print("Failure")
return False
def win_or_lose(odds):
percent_win = 16.45 # (1.0 / odds) * 100
pick = random.uniform(1.00, 100.00)
print("percent_win: %.2f" % percent_win)
print("pick: %.2f" % pick)
return pick <= percent_win
if __name__ == '__main__':
wins = 0
losses = 0
for x in range(100):
if simulate():
wins = wins + 1
else:
losses = losses + 1
print("|100 simulations run. Wins %d, Losses: %d" % (wins, losses))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment