止损投注法

止损投注法的核心就是:本次投注的盈利\(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制作的福彩和大乐透分析工具