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.
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.
In case anyone's curious... it's not the most clean or well-optimised code ever, but still:
Code: Select all
# 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
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) < winchance:
money += bet
money -= bet
wins = 0
losses = 0
for i in xrange(n):
if i % printevery == 0:
result = oneround()
if result == 0:
losses += 1
elif result == target:
wins += 1
# shouldn't happen usually, but can happen if, for instance, your target isn't a multiple of your starting bet
raise "Unexpected result: " + `result`
if __name__ == '__main__':
(wins,losses) = manyrounds(numrounds)
print `wins * 100.0 / numrounds` + "% win rate (" + `wins` + "/" + `numrounds` + ")"