## Finding best D'Alembert Multiple

```import random
import matplotlib
import matplotlib.pyplot as plt
import time

def rollDice():
roll = random.randint(1,100)

if roll <= 50:
#print roll,'roll was 1-50, you lose. Play again!'
return False

elif roll >= 51:
#print roll,'roll was 51-99, you win! *pretty lights flash* Play more!'
return True

def dAlembert(funds,initial_wager,wager_count):

global Ret
global da_busts
global da_profits

value = funds
wager = initial_wager
currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager

while currentWager <= wager_count:
if previousWager == 'win':
if wager == initial_wager:
pass
else:
wager -= initial_wager

#print 'current wager:',wager,'value:',value

if rollDice():
value += wager
#print 'we won, current value:',value
previousWagerAmount = wager
else:
value -= wager
previousWager = 'loss'
#print 'we lost, current value',value
previousWagerAmount = wager

if value <= 0:
da_busts += 1
break

elif previousWager == 'loss':
wager = previousWagerAmount + initial_wager
if (value - wager) <= 0:
wager = value

#print 'lost the last wager, current wager:',wager,'value',value

if rollDice():
value += wager
#print 'we won, current value:',value
previousWagerAmount = wager
previousWager = 'win'

else:
value -= wager
#print 'we lost, current value:',value
previousWagerAmount = wager

if value <= 0:
da_busts += 1
break
currentWager += 1

if value > funds:
da_profits += 1

#print value

Ret += value

def multiple_bettor(funds, initial_wager, wager_count):
global multiple_busts
global multiple_profits

value = funds
wager = initial_wager
wX = []
vY = []

currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager

while currentWager <= wager_count:
if previousWager == 'win':
#print 'we won the last wager, great'
if rollDice():
value+=wager
#print value
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
#print value
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
#print 'we went broke after'.currentWager,'bets'
multiple_busts += 1
break

elif previousWager == 'loss':
#print 'we lost the last one, so we will be smart and double'
if rollDice():
wager = previousWagerAmount * random_multiple

if (value - wager) < 0:
wager = value
#print 'we won',wager
value += wager
#print value
wager = initial_wager
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
wager = previousWagerAmount * random_multiple
if (value - wager) < 0:
wager = value
#print 'we lost',wager
value -= wager
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
#print 'we went broke after',currentWager,'bets'
multiple_busts += 1
break

#print value
previousWager = 'loss'

currentWager += 1

#print value
#plt.plot(wX,vY,color)
if value > funds:
multiple_profits += 1

def doubler_bettor(funds, initial_wager, wager_count,color):
value = funds
wager = initial_wager
global doubler_busts
global doubler_profits
wX = []
vY = []

currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager

while currentWager <= wager_count:
if previousWager == 'win':
#print 'we won the last wager, great'
if rollDice():
value+=wager
#print value
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
#print value
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
#print 'we went broke after'.currentWager,'bets'
doubler_busts += 1
break

elif previousWager == 'loss':
#print 'we lost the last one, so we will be smart and double'
if rollDice():
wager = previousWagerAmount * 2

if (value - wager) < 0:
wager = value
#print 'we won',wager
value += wager
#print value
wager = initial_wager
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
wager = previousWagerAmount * 2
if (value - wager) < 0:
wager = value
#print 'we lost',wager
value -= wager
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
#print 'we went broke after',currentWager,'bets'
doubler_busts += 1
break

#print value
previousWager = 'loss'

currentWager += 1

#print value
plt.plot(wX,vY,color)
if value > funds:
doubler_profits += 1

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)

currentWager += 1

if value <= 0:
value = 0
simple_busts+=1
#print 'Funds:', value

plt.plot(wX,vY,color)
if value > funds:
value = 0
simple_profits+=1

lower_bust = 31.235
higher_profit = 63.208

sampleSize = 1000
startingFunds = 10000

while True:
#wagerSize = 100
#wagerCount = 100000
wagerSize = random.uniform(1.0,1000.00)
wagerCount = random.uniform(10.0,10000)

Ret = 0.0
da_profits = 0.0
da_busts = 0.0
daSampSize = 10000
counter = 1

while counter <= daSampSize:
dAlembert(startingFunds,wagerSize,wagerCount)
counter+=1

ROI = Ret - (daSampSize*startingFunds)
totalInvested = daSampSize*startingFunds
percentROI = (ROI/totalInvested)*100.00
wagerSizePercent = (wagerSize/startingFunds)*100.00

# if over 1.
if percentROI > 1:
print '___________________________________________'
print 'Total invested:',daSampSize*startingFunds
print 'Total Return:', Ret
print 'ROI',Ret - (daSampSize*startingFunds)
print 'Percent ROI:',percentROI
print 'Bust Rate:',(da_busts/daSampSize)*100.00
print 'Profit rate:',(da_profits/daSampSize)*100.00
print 'wager size:',wagerSize
print 'wager count:',wagerCount
#################### change var
print 'wager size percentage:',wagerSizePercent

### we want to begin saving this stuff...

## stuff to save: percentROI,wagerSizePercent,wagerCount

saveFile = open('monteCarlo.csv','a')
saveLine = '\n'+str(percentROI)+','+str(wagerSizePercent)+','+str(wagerCount)+',g'
saveFile.write(saveLine)
saveFile.close()

elif percentROI < -1:
print '___________________________________________'
print 'Total invested:',daSampSize*startingFunds
print 'Total Return:', Ret
print 'ROI',Ret - (daSampSize*startingFunds)
print 'Percent ROI:',percentROI
print 'Bust Rate:',(da_busts/daSampSize)*100.00
print 'Profit rate:',(da_profits/daSampSize)*100.00
print 'wager size:',wagerSize
print 'wager count:',wagerCount
#################### change var
print 'wager size percentage:',wagerSizePercent

### we want to begin saving this stuff...

## stuff to save: percentROI,wagerSizePercent,wagerCount

saveFile = open('monteCarlo.csv','a')
saveLine = '\n'+str(percentROI)+','+str(wagerSizePercent)+','+str(wagerCount)+',r'
saveFile.write(saveLine)
saveFile.close()
```

The next tutorial:

• Monte Carlo Introduction

• Monte Carlo dice Function

• Creating a simple Bettor

• Plotting Results with Matpltolib

• Martingale Strategy

• Bettor Statistics

• More comparison

• Graphing Monte Carlo

• Fixing Debt Issues

• Analyzing Monte Carlo results

• Using Monte Carlo to find Best multiple

• Checking betting results

• D'Alembert Strategy

• 50/50 Odds

• Analysis of D'Alembert

• Comparing Profitability

• Finding best D'Alembert Multiple
• Two dimensional charting monte carlo

• Monte Carlo Simulation and Python

• Labouchere System for Gambling Tested