zealo wrote:what about a worth aiming for target like 50% of your total funds? or what target gives you a 50% chance of achieving it.

I'll give that a go... results should be interesting.

zealo wrote:does the starting bet (1, 10, 100) affect the odds?

Having a starting bet of $10 should be the same as having 1/10 of the funds available and 1/10 of the target (and 1/10 of the table limit). It probably changes your chance of winning in one way or the other, but I'm not entirely sure which way... I'd have to try it and see.

[edit]

OK, so... betting strategy from my previous simulation (min(target-money,money,tablelimit)), $10,000 table limit, $100,000 funds available, $50,000 target, $1 starting bet: around 25% chance of winning $50k, 75% of losing $100k (the exact figure in my small simulations ranges between 20% and 30%... it takes too long to run a longer simulation)

Exactly the same, but with a starting bet of $10: around 30% (+/- 2 or 3 or so) chance of winning

Starting bet of $100: around 36% (+/- 1) chance of winning

Starting bet of $10k (ie bet the table limit every time): 48% (+/- 1) chance of winning

I also tried just betting $1k every time... and out of 1000 trials, it won twice.

So yeah, the optimum strategy seems to be "bet the biggest amount you can, until you reach your final target"... which is still far from breakeven, but significantly better than Martingale.

Also: With the same situation, starting bet of $1, but a target of about $24000, you get a 50% chance of winning.

For a starting bet of $100, the target is $35000 that gives you a 50% chance.

For just always betting the table limit of $10k, the target is around $50k.

Note that for a fair table, all these figures would be $100k... all of these are a 50% chance of losing $100k, and a 50% chance of winning significantly less than $100k.

[edit again]

In case anyone's curious... it's not the most clean or well-optimised code ever, but still:

Code: Select all

`#!/usr/bin/env python`

# starting money available

fundsavail = 100000

# amount of money to call a "win"

target = fundsavail + 50000

# maximum bet

tablelimit = 10000

# first bet

startbet = 100

# probability of winning a round

winchance = (18,38) # can be changed to (18,37) for a one-zero table, or (18,36) for a fair table

# number of rounds

numrounds = 1000 # higher numbers give better results, but take longer

printevery = numrounds / 10

def oneround():

from random import randrange

money = fundsavail

curtarget = money + startbet

while money > 0 and money < target:

curtarget = max(curtarget, money + startbet)

bet = min(curtarget - money, money, tablelimit)

if randrange(winchance[1]) < winchance[0]:

money += bet

else:

money -= bet

return money

def manyrounds(n):

wins = 0

losses = 0

for i in xrange(n):

if i % printevery == 0:

print `i`+'/'+`n`

result = oneround()

if result == 0:

losses += 1

elif result == target:

wins += 1

else:

# shouldn't happen usually, but can happen if, for instance, your target isn't a multiple of your starting bet

raise "Unexpected result: " + `result`

return (wins,losses)

if __name__ == '__main__':

(wins,losses) = manyrounds(numrounds)

print `wins * 100.0 / numrounds` + "% win rate (" + `wins` + "/" + `numrounds` + ")"