背景:
已知一赌徒,使用加倍加注法进行押注。假设该赌徒的胜率为50% 资本为N,加倍押注指的是,以一单位(假设此处为1元)作为第一场的押注,如果赢了,继续以一元押注,如果输了则以2元押注,2元押注如果输了则继续翻倍,直到赢。赢了后则再从一元开始押注。
使用模块:
import random
import matplotlib.pyplot as plt
%matplotlib
实现代码:
# 设置初始的资金,保留资金变动记录
history = [100]
# 初始化赌注的倍数
times = 0
# 利用循环设置押注的次数
for i in range(100):
# 根据赌注的倍数进行下注
mind = 2 ** times
# 考虑剩余资金是否足够,若不够则押上所有剩余资金
if mind < history[-1]:
real = mind
else:
real = history[-1]
# 模拟开盘
flag = 1 if random.random() < 0.5 else -1
# 净胜资金(若输了则为负值)
win = flag * real
# 将押注后的剩余资金存入资金变动记录
history.append(history[-1] + win)
# 记录赌注倍数
if win > 0:
times = 0
else:
times += 1
# 看剩余资金是否大于零
if history[-1] > 0:
continue
else:
print("经过{}次押注, 输光了,最后剩余资金为:{}".format(len(history)-1,history[-1]))
print("倍数为:",times)
break
# 如果for循环正常执行完毕,则说明最后赌资为正,没有输光。
else:
print("运气不错,经过{}次押注,最后剩余赌资为{}".format(len(history)-1,history[-1]))
plt.plot(history)
结果: