二倍投注法
今天去看了《孤掷一注》,里面有个二倍投注法挺有意思的,刚开始听上去挺有道理的。。。
二倍投注法的大概原理是借用等比数列,前N项和等于第N+1项减去首项,再除以一个系数,如果是翻两倍的话,这个系数就等于1。 这样翻倍押的话,一直押某一边总有一次会中,然后中的时候一次都能全回来,而且还赢到了第一次押的钱。 唯一的风险就是把数太多本金全输光了也没赢,直接崩了。
很多人认为连续输个七八次是不可能的,毕竟统计概率都要接近零了,然后事实确实在赌的过程中,只要赌注没有归零,就会一直赌下去,可以视作N为无穷大,这样下来发生连续数个七八次以上的期望会被持续拉高,然后超过1,也就是说,一直赌总有一次会把本金全部输掉。

然后就是简单做了一个python的仿真,大概就是这么个条件:
闲家和庄家对赌:闲家每次下赌的赌注庄家都会收取千五的手续费。
用最基本的算法:投骰子,一共三个骰子。闲家先下注,然后开始赌局,如果闲家压中,就能获得两倍的收入,如果闲家压错,就白忙活。
闲家初始金额100000元,从50块开始下注,每次翻倍,直到赢为止才会重新从66块开始。看看能坚持多少轮。概率将如何波动。

import math
import random
import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
#闲家的初始资金
init_funding=100000
#init_funding=int(input('全部赌注是多少:')) #手动输入
#每次抽取的手续费用
ch_rate=0.005
#二倍投注法初始资金
init_bet=66
#init_bet=int(input('每次下的初始赌注是多少:')) #手动输入
def double(N):
return pow(2,N)*init_bet
EXCEPTIONs=[]
#闲家开始下注
for i in range(1,100):
funding=init_funding
fundings=[]
fundings.append(init_funding)
# 迭代次数N,翻倍次数叠加
N = 0
d_b = 0
max = init_funding
while(funding>0):
funding -= double(d_b)
if(funding<0):
print('你已无法开启命运之轮!')
print('第{}轮一共赌注{}次最多拥有{}元最后剩下{}元'.format(i,N,max,fundings[-1]))
EXCEPTIONs.append(N)
break
rd=random.randint(0, 1) #生成随机码模拟闲家下注0为猜小,1为猜大
situation=random.randint(1,18)
if(situation>=10):
flag=1
else:
flag=0
if(flag^rd==0):
#print('you win!')
funding+=double(d_b)*(1-ch_rate)*2
fundings.append(funding)
if(funding>max):
max=funding
d_b=0
else:
#print('you lose!')
funding+=0
fundings.append(funding)
d_b+=1
N=N+1
x=range(0,N+1)
plt.plot(x,fundings,color='r',marker='.',linestyle='dashed')
plt.xlabel('次数')
plt.ylabel('当前资金量')
plt.title('NO MORE BETS')
#最终期望为
print('当你拥有{}元时,用两倍法下注每次{}元,你平均输光的次数大概是{}'.format(init_funding,init_bet,sum(EXCEPTIONs)/100))
plt.show()



所以说,确实二倍投注法在道理上是那个道理,大致上确实是一条直线网上的,但是谁也不敢说自己的本金无限多,更不可能保证庄家不作弊之类的情况。还有这是建立在输赢各占一半的情况下的,如果输赢不是各占一般,甚至是64开,曲线增长的速率就会和缓的多,然后结束的也快。
