号称「永远不会输钱」的马丁格尔策略
点进来,说明你想赢,那我们直入主题。
所谓「马丁格尔(Martingale)策略」是在某个赌盘里,当每次「输钱」时就以 2 的倍数再增加赌金,直到赢钱为止。
假设在一个公平赌大小的赌盘,开大与开小都是 50% 的概率,所以在任何一个时间点上,我们赢一次的概率是 50%,连赢两次的概率是 25%,连赢三次的概率 12.5%,连赢四次的概率 6.25%,以此类推。因此,以概率来算,如果连赢四次的概率 6.25%,也就是说连输四次的概率一样也只有6.25%。
假设我们有 63 元,按照马丁格尔策略理论来算的话,63 元的连续亏损如下:
所以只能容许「连续亏损」6 次,概率是:
假如我们玩「押大小」,当我们与庄家对赌 73 次,在某个点「连续亏损 6 次」的概率是 41.7%,算法为(证明可以跳过不看,不影响阅读):
同理:
- 当我们押大小 150 次当中有一次会超过「连续亏损 6 次」的概率是 69.2%
- 当我们押大小 250 次当中有一次会超过「连续亏损 6 次」的概率是 85.9%
所以马丁格尔策略风险相当高,别别别,客官先别走,其实今天介绍的不是马丁格尔策略,而是「反马丁格尔策略(Anti-Martingale)」。
「反马丁格尔(Anti-Martingale)策略」,是在某个赌盘里,当每次赌金「赢钱」时就以 2 的倍数再增加赌金,若一直赢,就再加倍赌注。(直到某个目标次数,再重新开始)
再假设我们有 63 元,第一次我们都从 1 元开始押注,我们选择使用「反马丁格尔策略」,每赢一次赌注都以 2 的倍数递增。也就是 1,2,4,8,16,32 一直递增的方式来押注。因此,当我们连押四次都输钱的概率是 6.25%(前面算过),我们会输掉 4 元。同样,同样的概率下,连赢四次,那我们将会赢得:
所以在「同一个概率点」上,我们会「输掉 4 元」或「赢得 15 元」,我们看看其他概率点;
- 连赢三次或亏三次的概率是 12.5%,你会「输掉 3 元」或「赢得 7 元」
- 连赢两次或亏两次的概率是 25%,你会「输掉 2 元」或「赢得 3 元」
是不是有点迷糊,我们一步一步看:
假如目标是连赢四次才会从头押注(我们称为一轮),没到达连赢目标之前输都算失败,第一次都从 1 元开始(达到目标前输掉都会重新从 1 元开始押注)。只赢一次、两次、三次后输掉的情况如下:
可以看出:
不管设置赢得目标次数是几,每次失败,都是亏损「第一次押注的金额」
继续以 63 元赌金为例,以「反马丁格尔策略」的操作方法来操作,你要输光,就必须让庄家连开 63 次与你押注相反的盘,这种情况一百万兆次才会发生一次 ?
有点懵逼?没关系,我们再通过感性认识去理解一下
想象一下,我们站在一座山丘上,堆了四个雪球(1 元开始押注),我们同一时间将雪球往下推,假设其中三个雪球都在途中被石头啦、树木啦撞坏了(此轮失败),只有一个顺利滚到山下(达成目标连赢),那么它现在已经变得非常的大,可能是当初雪球大小的十倍或百倍大小(获利)
滚雪球~
有没有好理解一些?
传统的「马丁格尔」以及「反马丁格尔」策略都是以
为乘积,但是实际上
的递增操作方式还是风险挺大的,我们可以使
之间,当然在赌场算起来就不方便了 ?
总结一下,这个策略有两点比较关键:
- 趋势
- 趋势的长度
分别对应
- 达成目标(连赢)的概率
- 连赢次数的设置
看到这里是不是有点蠢蠢欲动?笔者也是,所以我用 Python 写了个小程序
定义一个赌局
参数
-
pocket
:开始玩时兜里里的钱 -
pay
:单次赌注
返回:
-
result
:1(赢)或者 0(输) -
pocket
:玩完一把后兜里的钱
import random
WIN = 1
LOSE = 0
def gambling_50_percent(pocket, pay):
result = random.randint(0, 1)
if result == WIN:
pocket += pay
else:
pocket -= pay
return result, pocket
注解:赢了会赢押注相同的钱,输了赌注被庄家收走
定义一轮游戏
参数解释:
-
win_time_to_stop
:目标连赢次数 -
pocket
:钱包里面的钱 -
pay
:单次赌注 -
n
:押注递增系数
def play_a_round(win_time_to_stop, pocket, pay, n):
money_when_start = pocket
root_pay = pay
for i in xrange(win_time_to_stop):
win_or_lose, pocket = gambling_50_percent(pocket, pay)
if win_or_lose == WIN:
pay *= n
else:
pay = root_pay
break
print pocket, pay
return pocket - money_when_start, pocket > money_when_start
注解:此方法是模拟一轮(win_time_to_stop
次)游戏,只有两种结果,即:
- 达到「目标连赢次数」
- 未达到「目标连赢次数」
循环中,如果输一次,那么直接跳出循环,结束此轮;没输就继续玩直到「目标连赢次数」,最终返回金额变动(pocket - money_when_start
)和输赢结果(pocket > money_when_start
)
玩几把
兜里:63 元
首次赌注:1 元
押注递增系数:2 倍
目标连赢次数:4 次
连输 10 轮
根据我们前文的分析,每输一轮,只会亏损「第一次押注的金额」
十个雪球全部滚失败,损失:
元(这种情况比较常见 ?)
一个雪球滚成功啦
一个雪球滚成功,获利:
九个雪球滚失败,损失:
最终结果:
,符合计算结果
两个雪球,不可思议!
两个雪球滚成功,获利:
八个雪球滚失败,损失:
最终结果:
,符合计算结果
完整源码:
https://gist.github.com/tmpbook/957a41aee344789a67a7e8201c4ae617
- 揭秘新人机大战柯洁对手天壤 AI排名已力压Deepzen
- 一路走到java工程师,java都快出java9了,到底该如何学java?
- 网站发布合并bll问题的解决
- 痛并快乐着:浅谈大数据时代的分布式存储架构
- linux运维中的命令梳理(四)
- linux运维中的命令梳理(三)
- 轻松水印-批量提取exif信息加水印的工具
- Enterprise Library 4.1学习笔记7----缓存应用程序块之SqlDependency
- linux运维中的命令梳理(一)
- 可视化你的BLAST结果
- linux运维中的命令梳理(二)
- VB-取日期属于星期几
- 全球AI新闻创新实践系列③:华邮、雅虎、美联社、Quartz怎么干!
- nginx+php负载均衡集群环境中的session共享方案梳理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring boot 如何统一处理 Filter、Servlet 中的异常信息
- 10分钟理解Focal loss数学原理与Pytorch代码(翻译)
- 十分钟了解受控文本生成 1
- 数据库系统设计概述
- Java基础篇(03):流程控制语句,和算法应用
- 09 | Tornado源码分析:Future 对象
- 面向对象的7种设计原则(4)-合成/聚合复用原则
- Netty之异步通知机制
- 面向对象的7种设计原则(3)-依赖倒置原则
- Java实现旅行商最短距离
- 不是吧,阿Sir啊,可不可以不用再写finally?
- 整理得吐血了,二叉树、红黑树、B&B+树超齐全,快速搞定数据结构
- 牛客网-最小的k个数
- 牛客网-栈的压入、弹出序列
- 牛客网-对称二叉树