期望值为无穷大的博彩游戏,真的花多少钱玩都值得吗?

我们知道,一般当人们在投资方面进行决策的时候,往往会根据所期望的收益,决定花多少钱投入。但是,当人们玩博彩游戏时,似乎不再遵循这个原则。文[1]指出,通常博彩游戏的期望值都是庄家赚钱,玩家亏钱,只有这样庄家才能盈利。换句话说,玩家如不玩博彩游戏,期望收益是0,而如果玩博彩游戏,期望收益是负数[1]。但是即便如此,仍然有很多人玩博彩游戏,因为期望收益并不是人们做决策的唯一考虑因素。

但如果博彩游戏的期望值真的有利于玩家了,也就是说玩的价格如果小于期望收益,玩家就会愿意玩吗?其实不一定。本文介绍两种博彩游戏,其玩家的期望收益达到无穷,也就是说无论庄家如何定价,只要是有限大,玩家的期望收益都是正数,但玩家未必愿意玩。本文分析不愿意玩的原因。

一、期望值为无穷大的博彩游戏简介

(一)圣彼得堡游戏

1738年,数学家丹尼尔伯努利(Daniel Bernouli)的堂兄弟尼古拉伯努利提出了一个圣彼得堡游戏[2]。游戏规则:抛掷硬币,并令正面或反面作为成功的定义。如果第一次抛掷成功,得奖金2元;第二次才成功,4元;第n次成功,2^n[2]。那么收益值R的期望值

E(R) = {1\over 2}2^{1}+{1\over 2^2}2^{2}+...+{1\over 2^n}2^{n}+...={1}+{1}+...=+\infty

(二)翻镜子游戏

现在,将两面镜子放在地面上,然后随机转动一面镜子,停下后两面镜子之间会呈一个角度。这两面镜子之间的角度用如下方式定义:

然后将物体放在镜子前,该物体在镜子中能成几个像,就得奖金几元。文章[3]中指出,一个物体在两个互成角度\alpha(角度值)的平面镜中成的像的个数N是:

N={360\over \alpha}-1

这里\alpha[0,360]之间均匀分布。显然,如果两面镜子恰好平行,镜子面前的物体在镜子中会成无穷多个像。成像个数N的期望值这样求:

首先,要求出N的概率分布。先从求\alpha的累积分布函数(Cumulative Distribution Function)开始。

CDF(\alpha)={\alpha\over 360}

由于N\alpha之间的函数在\alpha\in [0,360]单调递减

P(N\leq {360\over \alpha}-1)=1-{\alpha\over 360}=1-{1\over N+1} (1)

通过导数运算计算N的概率密度函数(probability density function)

pdf(N)={dP(N)\over dN}={1\over (N+1)^2}

现在计算期望值

E(N)=\int_0^{+\infty}N{1\over (N+1)^2}dN=\int^{+\infty}_0(N+1){1\over (N+1)^2}dN-\int^{+\infty}_0{1\over (N+1)^2}dN

=\int_1^{+\infty}{1\over N}dN-\int_1^{+\infty}{1\over N^2}dN=+\infty

以上两个游戏的期望值均为无穷,也就是说如果从期望收益而言,玩家花多少钱都是愿意的。

二、游戏运行效果模拟

现在,用Matlab模拟这两个游戏。把这两个游戏玩10000次,计算每次得到奖金的平均值。同样的操作进行10次,观察结果。

圣彼得堡游戏:

function num_of_tosses = StPetersburgGame()
    tossed = 0;
    while true
        result = unidrnd(2,1); %randomly pick between 1 and 2 
        tossed = tossed + 1;
        if result == 2 %If 2 then quit
            break
        end
    end
    num_of_tosses = tossed;
end
function reward = playStPersburg()
    num_of_tosses = StPetersburgGame();
    reward = 2 ^ (num_of_tosses);
end
avgResults = zeros(10,1);
for jj = 1:10
    rewards = zeros(10000,1);
    for ii = 1:10000
        rewards(ii) = playStPersburg();
    end
    avgResults(jj) = mean(rewards);
end
avgResults

10次的平均值分别为

8.550212.02516.439910.80725.11787.57997.32817.13955.66597.3176

从中可以看出,奖金的平均值并不收敛,可以说明其期望值不能稳定存在。但是,也似乎并没有出现很大的数值。

同样,翻镜子游戏:

function num_of_objects = mirrorGame()
    a = rand() * 360;
    num_of_objects = 360 / a - 1;
end
avgResults = zeros(10,1);
for jj = 1:10
    rewards = zeros(1000000,1);
    for ii = 1:1000000
        rewards(ii) = mirrorGame();
    end
    avgResults(jj) = mean(rewards);
end
avgResults

10次的平均值分别为

23.253648.441923.658812.121012.344125.622613.122512.126612.960615.4802

三、分析

从上述实验结果可看出,通过模拟,并不会产生很大的平均值,似乎没有体现出“趋向无穷大”的现象。如果玩家看到了这样的结果,不会愿意花很多钱玩这个游戏。然而,为什么在现实中,会“辜负”期望呢?

关于这一点,需要从这些非常大的值出现的概率入手。

(一)大值概率

以圣彼得堡游戏为例,再次回忆出现各奖金值的概率

概率奖金
1\over 22
1\over 2^22^2
1\over 2^32^3
......
1\over 2^{n}2^{n}
......

也就是说,虽然得期望得到的奖金是无穷大,但得到奖金超过2^{n}的概率,小于{1\over 2^{n+1}}+{1\over 2^{n+2}}+...={​{1\over 2^{n+1}}\over 1-{1\over 2}}={1\over 2^n}

例如,奖金超过16的概率小于1\over 16。对于发生的概率为p的事件,两次发生之间未发生该事件的实验次数(即间隔次数)期望值为1-p\over p[4]。因此,对于此情况,期望现象是在一次出现奖金超过16之后,玩15次游戏都未出现奖金超过15的情况,直到第16次才再次出现。

对于翻镜子游戏也是如此。如式(1)所示,P(N>x)=1-(1-{1\over x+1})={1\over x+1}

简单地说,就是得到大奖金的情况,期望是在玩了很多次后,才会出现。

还是以圣彼得堡游戏为例,由于得到奖金超过x的概率小于1\over x,我们期望前x-1次都未能得到超过x的奖金(指单次),到第x才得到。而之前x-1次玩这个游戏得到的总奖金的期望值为

R(x)=(x-1)({​{1}+2^2({1\over 2})^2+...+2^{c}({1\over 2})^c\over 1-{({1\over 2})^{c+1}\over 1-{1\over 2}}})

其中c=\log_2x-1

R(x)=(x-1)({​{1}+2^2{1\over 2^2}+...+2^{c}{1\over 2^{c}}\over 1-{​{1\over x}\over 1-{1\over 2}}})={\log_2x-1\over 1-{2\over x}}

所以,期望在玩了x次后,得到的总奖金才会超过R_{expect}(x)=(x-1){\log_2x-1\over 1-{2\over x}}+x

特别的,当x=2时,期望情况是第一次得奖金为2,第二次得到的奖金超过4,所以第二次玩后总奖金才会超过6,即R_{expect}(2)=6

R_{expect}(x)函数用Matlab实现

function reward = tryXTimesEst(x)
    if x > 2
        reward = x + (x-1) * ((log(x) / log(2) - 1)) / (1 - 2/x);
    else
        reward = 6;
    end
end

以之前的x=2^4=16为例,R_{expect}(16)=67.4286,也就是说在玩了16次后,总奖金期望才会高于67.4286

(二)游戏模拟

现在用Matlab模拟该游戏,玩16次,计算总奖金。该动作做10

function overallReward = tryXTimes(x) %该代码模拟玩游戏x次,计算总奖金
    overallReward = 0;
    for ii = 1:x
        overallReward = overallReward + playStPersburg();
    end
end
for ii = 1:10
    tryXTimes(16)
end
tryXTimesEst(16)

10次的运行结果,即总奖金,如下

1284492136983761861807682

从表中可看出,10次里有9次总奖金超过了R_{expect}(16),其中有一次非常高。

(三)进一步实验

现在尝试令x=2,4,8,16,32,计算R_{expect}(x),同时对每一个玩x次的情况,运行50次,统计有多少次总奖金超过了R_{expect}(x)

注,运行的次数也可以自行调整,改numberOfTimes的变量值。

xs = [2, 4, 8, 16, 32];
numberOfTimes = 50;
rewEst = zeros(5,1);
rewReal = zeros(5, numberOfTimes);
for xIdx = 1:length(xs)
    rewEst(xIdx) = tryXTimesEst(xs(xIdx));
    for ii = 1:numberOfTimes
        rewReal(xIdx, ii) = tryXTimes(xs(xIdx));
    end
end
rewEst
compTable = (rewReal > rewEst);
compTimes = sum(compTable, 2);
compTimes/numberOfTimes
x2481632
R_{expect}(x)61026.666767.4286164.2667
总奖金超过的比例56%80%80%84%70%

从中可看出,总奖金大致有55%-85%的概率会超过估计的期望。当然,该数据在每次实验中结果也不尽相同,只能作为参考。由此可见,期望超过的总奖金,仍然有很大可能被“辜负”。

四、总结

即使是期望奖金为无穷大的游戏,玩家也并不是花多少钱都愿意玩的。原因在于出现很大收益的可能性很小,期望现象是在玩了很多次后总收益才会超过一定的值,而玩家并不会愿意玩很多次。而且即便如此,这个期望的收益仍有很大可能性被“辜负”。

参考资料

[1] Paradoxes for Probability

[2] 圣彼得堡悖论_百度百科

[3] 一个物体在两个互成角度的平面镜中能成几个像?-高海鹏老师的博客

[4] 伯努利分布(Bernoulli distribution)的两次成功之间间隔次数的分布-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值