
So now that we've compared the life expectency of these strategies, we should also compare profits. First we can just compare profit vs loss, but also degree of profits is important. Both strategies stand to lose equal amounts, but this is not the case for gains. It is clear that our doublor bettor, despite having lower life expectancy, has far more upside compared to the simple bettor.
import random
import matplotlib
import matplotlib.pyplot as plt
import time
sampleSize = 10000
startingFunds = 10000
wagerSize = 100
wagerCount = 100
def rollDice():
roll = random.randint(1,100)
if roll == 100:
return False
elif roll <= 50:
return False
elif 100 > roll >= 50:
return True
def doubler_bettor(funds,initial_wager,wager_count,color):
global doubler_busts
#####################
global doubler_profits
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager
while currentWager <= wager_count:
if previousWager == 'win':
if rollDice():
value += wager
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value < 0:
currentWager += 10000000000000000
doubler_busts += 1
elif previousWager == 'loss':
if rollDice():
wager = previousWagerAmount * 2
if (value - wager) < 0:
wager = value
value += wager
wager = initial_wager
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
wager = previousWagerAmount * 2
if (value - wager) < 0:
wager = value
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
currentWager += 10000000000000000
doubler_busts += 1
currentWager += 1
plt.plot(wX,vY,color)
#####################
if value > funds:
doubler_profits+=1
'''
Simple bettor, betting the same amount each time.
'''
def simple_bettor(funds,initial_wager,wager_count,color):
global simple_busts
#####################
global simple_profits
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
while currentWager <= wager_count:
if rollDice():
value += wager
wX.append(currentWager)
vY.append(value)
else:
value -= wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
currentWager += 10000000000000000
simple_busts +=1
currentWager += 1
plt.plot(wX,vY,color)
#####################
if value > funds:
simple_profits+=1
x = 0
simple_busts = 0.0
doubler_busts = 0.0
#####################
simple_profits = 0.0
doubler_profits = 0.0
while x < sampleSize:
simple_bettor(startingFunds,wagerSize,wagerCount,'c')
#simple_bettor(startingFunds,wagerSize*2,wagerCount,'c')
doubler_bettor(startingFunds,wagerSize,wagerCount,'k')
x+=1
print(('Simple Bettor Bust Chances:', (simple_busts/sampleSize)*100.00))
print(('Doubler Bettor Bust Chances:', (doubler_busts/sampleSize)*100.00))
print (('Simple Bettor Profit Chances:', (simple_profits/sampleSize)*100.00))
print(('Doubler Bettor Profit Chances:', (doubler_profits/sampleSize)*100.00))
plt.axhline(0, color = 'r')
plt.ylabel('Account Value')
plt.xlabel('Wager Count')
plt.show()
Your results may vary slightly, but they should be something like:
('Simple Bettor Bust Chances:', 0.0)
('Doubler Bettor Bust Chances:', 31.269999999999996)
('Simple Bettor Profit Chances:', 38.32)
('Doubler Bettor Profit Chances:', 63.190000000000005)
