止损投注法的核心就是:本次投注的盈利\(I\)(Incoming),必须至少能覆盖上次的成本\(C\)(Cost)。这个也是商业行为中的典型边际利润问题。
猜正反
以最简单的抛硬币猜正反为例:
假设:赌徒每次可以投注\(p\)(\(p>0\))元。如果猜错,庄家将收走赌徒投注的全部金额。如果猜对,那么赌徒可以获得\(kp\)(\(k>0\))元奖励。
赌徒使用止损投注法。其投注步骤如下:
下注 | 投入\(C\) | 猜对\(I\) | 猜错 |
第一次 | \(p\)元 | 获得\(k \cdot p\)元 | 总计损失\(p\)元 |
第二次 | \(2p\)元 | 获得\(k\cdot 2p\)元 | 总计损失\(2p\)元 |
第三次 | \(3p\)元 | 获得\(k \cdot 3p\)元 | 总计损失\(3p\)元 |
…… | …… | …… | …… |
第\((n-1)\)次 | \((n-1)p\)元 | 获得\(k \cdot (n-1)p\)元 | 总计损失\((n-1)p\)元 |
第\(n\)次 | \(np\)元 | 获得\(k \cdot np\)元 | 总计损失\(np\)元 |
从上述数据表中可以获得三个公式:
\[ \left \{ \begin{array}{lr} k > 0 & ……(1) \\ k \cdot p \ge p & ……(2) \\ k \cdot np \ge np & …… (3)\end{array} \right. \]
式子\((1)\)保证收益必须为正的,否则这个游戏不会有赌徒参与;式子\((2)\)保证第一次收益必须能覆盖成本,否则这个游戏不会有赌徒参与;最后一个式子\((3)\)就是要保证边际利润。
因此,可以推导出:只要\(k \ge 1\),那么这个游戏就可以玩下去。
在这个猜硬币正反的模式下:如果连续出现了16次硬币正面朝上,试问赌徒是否可以砸了庄家的档口?
福彩双色球
下面用福彩双色球的实际数据带入进去:
赌徒每次投注,庄家需要收取2元投注费。如果猜错,赌徒将一无所获。如果猜对,那么赌徒将获得\(5\)元奖金。假设,赌徒每次投注都选同一个号码的蓝色球(猜中的概率为\(\frac {1}{16}\))。
下注 | 投入\(C\) | 猜对\(I\) | 猜错 |
第一次 | 2元一注 | 获得5元 总计收益3元 | 总计损失2元 |
第二次 | 2元一注 | 获得5元 总计收益1元 | 总计损失4元 |
第三次 | 4元两注 | 获得10元 总计收益2元 | 总计损失8元 |
第四次 | 6元三注 | 获得15元 总计收益1元 | 总计损失14元 |
…… | …… | …… | …… |
第\((n-1)\)次 | \(C_{n-1}\)元\(\frac {C_{n-1}}{2}\)注 | 获得\(\frac {C_{n-1}}{2} \times 5\)元 | 总计损失\(\sum \limits_{i=1}^{n-1} C_i\)元 |
第\(n\)次 | \(C_n\)元\(\frac {C_n}{2}\)注 | 获得\(\frac {C_n}{2} \times 5\)元 | 总计损失\(\sum \limits_{i=1}^{n} C_i\)元 |
…… | …… | …… | …… |
按照止损法,赌徒必须要保证:
\[\left \{ \begin{array}{lr} [\frac {\sum \limits_{i=1}^{n-1} C_i}{5}] + 1 \le \frac {C_n}{2} & ……(1) \\ \frac {C_n}{2} \times 5 \ge \sum \limits_{i=1}^{n-1} C_i + C_n & ……(2) \end{array} \right. \]
赌徒通过式子\((1)\)推导出下一次至少需要投注多少;另外通过式子\((2)\)来保证下一次的收益必须不小于本次投入。
参考代码(Matlab)
clear
close all
clc
% 起始值
uint64 i;
Cost = int64(16);
for i = 1 : 16
Cost(i) = 0;
end
%第一次投注
Cost(1) = 2;
fprintf('第1次投1注,花费2元\r\n');
% 循环计算
for i = 2: 15
% 计算前面的成本总和
int64 sum;
uint64 j;
sum = 0;
for j = 1 : i - 1
sum = sum + Cost(j);
end
% 计算最低投注数
int64 T;
T = ceil(sum / 5);
% 保证收益求解投注数
int64 t;
t = T;
while t * 5 < sum + t * 2
t = t + 1
end
Cost(i) = 2 * t;
fprintf('第%d次投%d注,花费%d元,收益%d元\r\n',i, t, Cost(i), t * 5);
end
运行后,打印成本数组数据:
>> Cost
Cost =
1×16 int64 行向量
2 2 4 6 10 16 28 46 76 128 212 354 590 984 1640 0
通过成本数组,就可以计算出每次需要买多少注彩票。当然这里只关注最后的蓝色球。其他色球的收益,那就要看各位的运气了。
拓展阅读
AlgMain : 使用Excel制作的福彩和大乐透分析工具