三国杀中的概率学问题3——王荣

前言

本文是三国杀中的概率学问题系列文章中的一篇,将详细讨论王荣吉占的期望摸牌数问题。并加上连续情形作为拓展。

值得说明的是,本文的思路受到了一篇文章的启发,在此特别鸣谢,这是文章的链接

王荣吉占的期望摸牌数

在这里插入图片描述
王荣的二技能吉占很有意思,展示牌堆顶的一张牌,然后猜测下一张牌比这张牌大还是比这张牌小,猜对了就继续猜,直到猜错为止,然后最终可以获得展示的所有牌。所以即便第一次就猜错,也能拿到2张牌(第一张展示的牌,和猜错的这张牌)。为了能够摸更多的牌,我们需要采取贪心的猜牌策略,保证自己这次猜对的概率最大。也就是说,在展示的牌为1-6时,我们选择猜大,8-13时猜小,7的时候由于猜大和猜小的概率一样,所以猜大猜小都可以。

离散情形

为了使得模型更一般化,将13种不同的点数改为n种不同的点数。那么问题可以重新描述如下:

问题:牌有1~n这n种点数,我们先亮出第一张牌,然后猜测下一张牌跟这一张牌的大小关系,然后亮出下一张牌,若猜对则继续猜,猜错就停止。求在最优策略下平均能亮出几张牌。

由于牌堆为理想牌堆,不管怎么拿牌,每种点数的牌的张数都是一样的,所以最优策略即为:若当前牌的点数小于等于 n + 1 2 \frac{n+1}{2} 2n+1,就猜大,否则猜小。

我们令 f ( x ) f(x) f(x)表示当前牌的点数为 x x x时,后面会亮出的牌数的数学期望。那么,我们可以得到下面的公式:

f ( x ) = { ∑ i = x + 1 n 1 n f ( i ) + 1 0 ≤ x ≤ n + 1 2 ∑ i = 1 x − 1 1 n f ( i ) + 1 n + 1 2 < x ≤ 1 f(x)=\begin{cases} \sum_{i=x+1}^n{\frac{1}{n}f(i)+1} &0\leq x\leq\frac{n+1}{2} \\ \sum_{i=1}^{x-1}{\frac{1}{n}f(i)+1} & \frac{n+1}{2}<x\leq 1 \end{cases} f(x)={i=x+1nn1f(i)+1i=1x1n1f(i)+10x2n+12n+1<x1

解释一下这个公式,当前牌的点数为 x x x时,首先会亮出下一张牌,这是+1的含义。然后下一张牌是每个点数的概率都是 1 n \frac{1}{n} n1,把猜对了能亮出的牌数乘以概率累加起来,就是猜对了之后期望亮出的牌数。分成两段也仅仅是因为猜测策略的原因。

我们要求的是平均能亮出几张牌,假设这个数量为 E E E,那么 E = 1 n ∑ i = 1 n f ( i ) + 1 E=\frac{1}{n}\sum_{i=1}^n{f(i)}+1 E=n1i=1nf(i)+1

首先先亮出一张牌,然后这张牌的点数有n种可能性,即有 1 n \frac{1}{n} n1的概率为i。如果第一张牌是i的话,则期望亮出的牌数就是 f ( i ) f(i) f(i)。于是我们把概率乘以亮出牌数累加起来,就是接下来会亮出的牌数,即 1 n ∑ i = 1 n f ( i ) \frac{1}{n}\sum_{i=1}^n{f(i)} n1i=1nf(i)。再加上第一张亮出的牌,就是 1 n ∑ i = 1 n f ( i ) + 1 \frac{1}{n}\sum_{i=1}^n{f(i)}+1 n1i=1nf(i)+1了。 E E E就是我们想求的答案。

接下来我们来算出 f ( x ) f(x) f(x)的具体值。

我们设出 f ( x ) f(x) f(x)的前缀和。令 F ( x ) = ∑ i = 1 n f ( i ) F(x)=\sum_{i=1}^n{f(i)} F(x)=i=1nf(i)

n + 1 2 < x ≤ 1 \frac{n+1}{2}<x\leq 1 2n+1<x1时:

f ( x ) = 1 n F ( x − 1 ) + 1 f(x)=\frac{1}{n}F(x-1)+1 f(x)=n1F(x1)+1

F ( x − 1 ) = n f ( x ) + n F(x-1)=nf(x)+n F(x1)=nf(x)+n

x + 1 x+1 x+1代入 x x x得:

F ( x ) = n f ( x + 1 ) + n F(x)=nf(x+1)+n F(x)=nf(x+1)+n

两式相减得:

f ( x ) = n f ( x + 1 ) − n f ( x ) f(x)=nf(x+1)-nf(x) f(x)=nf(x+1)nf(x)

于是得到了 f ( x ) f(x) f(x)的递推式

f ( x + 1 ) = n + 1 n f ( x ) f(x+1)=\frac{n+1}{n}f(x) f(x+1)=nn+1f(x)

由于 n n n为常数,于是我们发现在 n + 1 2 < x ≤ 1 \frac{n+1}{2}<x\leq 1 2n+1<x1上, f ( x ) f(x) f(x)是等比数列。

类似地,在 0 ≤ x ≤ n + 1 2 0\leq x\leq\frac{n+1}{2} 0x2n+1上求得 f ( x + 1 ) = n n + 1 f ( x ) f(x+1)=\frac{n}{n+1}f(x) f(x+1)=n+1nf(x)

可以发现, f ( x ) f(x) f(x)是一列以 n + 1 2 \frac{n+1}{2} 2n+1为对称轴,先递减,后递增的两段等比数列,公比分别为 n n + 1 \frac{n}{n+1} n+1n n + 1 n \frac{n+1}{n} nn+1

等比数列的求和公式为 S = a 1 ∗ q n − 1 q − 1 S=a_1*\frac{q^n-1}{q-1} S=a1q1qn1,现在公比已经知道了,所以要求首项。 f ( n + 1 2 ) f(\frac{n+1}{2}) f(2n+1)位于两段的连接处,可以让它作为两段等比数列的首项。现在我们来求 f ( n + 1 2 ) f(\frac{n+1}{2}) f(2n+1)

我们不妨假设 n n n为奇数,这样 x = n + 1 2 x=\frac{n+1}{2} x=2n+1在公式的两段上都可以成立。于是有

f ( n + 1 2 ) = ∑ i = n + 3 2 n 1 n f ( i ) + 1 = ∑ i = 1 n − 1 2 1 n f ( i ) + 1 f(\frac{n+1}{2})=\sum_{i=\frac{n+3}{2}}^n{\frac{1}{n}f(i)+1}=\sum_{i=1}^{\frac{n-1}{2}}{\frac{1}{n}f(i)+1} f(2n+1)=i=2n+3nn1f(i)+1=i=12n1n1f(i)+1

( 2 + 1 n ) f ( n + 1 2 ) = 1 n F ( n ) + 2 (2+\frac{1}{n})f(\frac{n+1}{2})=\frac{1}{n}F(n)+2 (2+n1)f(2n+1)=n1F(n)+2

f ( n + 1 2 ) = 1 2 n + 1 F ( n ) + 2 n 2 n + 1 f(\frac{n+1}{2})=\frac{1}{2n+1}F(n)+\frac{2n}{2n+1} f(2n+1)=2n+11F(n)+2n+12n

利用 f ( x ) f(x) f(x)的对称性,以及等比数列求和公式,有

F ( n ) = ∑ i = 1 n − 1 2 f ( i ) + ∑ i = n + 1 2 n f ( i ) = ∑ i = n + 3 2 n f ( i ) + ∑ i = n + 1 2 n f ( i ) = n + 1 n f ( n + 1 2 ) ( n + 1 n ) n − 1 2 − 1 n + 1 n − 1 + f ( n + 1 2 ) ( n + 1 n ) n + 1 2 − 1 n + 1 n − 1 = [ 2 n ( n + 1 n ) n + 1 2 − 2 n − 1 ] f ( n + 1 2 ) F(n)=\sum_{i=1}^{\frac{n-1}{2}}{f(i)}+\sum_{i=\frac{n+1}{2}}^n{f(i)}=\sum_{i=\frac{n+3}{2}}^n{f(i)}+\sum_{i=\frac{n+1}{2}}^n{f(i)}=\frac{n+1}{n}f(\frac{n+1}{2})\frac{(\frac{n+1}{n})^{\frac{n-1}{2}}-1}{\frac{n+1}{n}-1}+f(\frac{n+1}{2})\frac{(\frac{n+1}{n})^{\frac{n+1}{2}}-1}{\frac{n+1}{n}-1}=[2n(\frac{n+1}{n})^{\frac{n+1}{2}}-2n-1]f(\frac{n+1}{2}) F(n)=i=12n1f(i)+i=2n+1nf(i)=i=2n+3nf(i)+i=2n+1nf(i)=nn+1f(2n+1)nn+11(nn+1)2n11+f(2n+1)nn+11(nn+1)2n+11=[2n(nn+1)2n+12n1]f(2n+1)

联立两式
{ f ( n + 1 2 ) = 1 2 n + 1 F ( n ) + 2 n 2 n + 1 F ( n ) = [ 2 n ( n + 1 n ) n + 1 2 − 2 n − 1 ] f ( n + 1 2 ) \begin{cases} f(\frac{n+1}{2})=\frac{1}{2n+1}F(n)+\frac{2n}{2n+1}\\ F(n)=[2n(\frac{n+1}{n})^{\frac{n+1}{2}}-2n-1]f(\frac{n+1}{2}) \end{cases} {f(2n+1)=2n+11F(n)+2n+12nF(n)=[2n(nn+1)2n+12n1]f(2n+1)

解得
{ f ( n + 1 2 ) = n 2 n + 1 − n ( n + 1 n ) n + 1 2 F ( n ) = n [ 2 n 2 n + 1 ( n + 1 n ) n + 1 2 − 1 ] 1 − n 2 n + 1 ( n + 1 n ) n + 1 2 \begin{cases} f(\frac{n+1}{2})=\frac{n}{2n+1-n(\frac{n+1}{n})^{\frac{n+1}{2}}}\\ F(n)=\frac{n[\frac{2n}{2n+1}(\frac{n+1}{n})^{\frac{n+1}{2}}-1]}{1-\frac{n}{2n+1}(\frac{n+1}{n})^{\frac{n+1}{2}}} \end{cases} f(2n+1)=2n+1n(nn+1)2n+1nF(n)=12n+1n(nn+1)2n+1n[2n+12n(nn+1)2n+11]

于是,可以得到

E = ∑ i = 1 n 1 n f ( i ) + 1 = 1 n F ( n ) + 1 = 1 2 n + 1 n ( n n + 1 ) n + 1 2 − 1 E=\sum_{i=1}^{n}\frac{1}{n}f(i)+1=\frac{1}{n}F(n)+1=\frac{1}{\frac{2n+1}{n}(\frac{n}{n+1})^\frac{n+1}{2}-1} E=i=1nn1f(i)+1=n1F(n)+1=n2n+1(n+1n)2n+111

n = 13 n=13 n=13时, E ≈ 4.232 E\approx4.232 E4.232

n → ∞ n\to\infty n时, l i m n → ∞ E = l i m n → ∞ 1 2 ( 1 − 1 n + 1 ) n + 1 2 − 1 = 1 2 e − 1 2 − 1 ≈ 4.69 lim_{n\to\infty}E=lim_{n\to\infty}\frac{1}{2(1-\frac{1}{n+1})^{\frac{n+1}{2}}-1}=\frac{1}{2e^{-\frac{1}{2}}-1}\approx4.69 limnE=limn2(1n+11)2n+111=2e21114.69

至此,原题就解出来了。

连续情形

我们再做一点点扩展,看看在 n n n趋于无穷时的情况。现在我们把问题转化为连续的情况。

问题:在[0,1]区间上的均匀分布总体进行依次采样,约定若采样得到的随机数小于 1 2 \frac{1}{2} 21,则猜测下一次采得的随机数会更大;若采样得到的随机数大于 1 2 \frac{1}{2} 21,则猜测下一次采得的随机数会更小。若猜测正确,则继续猜;若猜测错误,则采样终止。求采样次数的数学期望。

f ( x ) f(x) f(x)表示当前点为 x x x时,继续猜测的次数。给出 f ( x ) f(x) f(x)的表达式如下:
f ( x ) = { ∫ x 1 f ( t ) d t + 1 0 ≤ x ≤ 1 2 ∫ 0 x f ( t ) d t + 1 1 2 < x ≤ 1 f(x)=\begin{cases} \int_x^1{f(t)dt}+1 &0\leq x\leq\frac{1}{2} \\ \int_0^x{f(t)dt}+1 & \frac{1}{2}<x\leq 1 \end{cases} f(x)={x1f(t)dt+10xf(t)dt+10x2121<x1
值得说明的是, x = 1 2 x=\frac{1}{2} x=21的情况对于两个公式都成立。这个式子是怎么得出来的呢?现在的点是 x x x,我们先要按上述规则进行一次猜测(这是+1的含义)。如果猜错了,我们就失去了继续猜测的机会。如果猜对了,那么我们可以继续猜测。假设下一个点是 t t t,这样的概率为 d t dt dt,继续猜测的次数为 f ( t ) f(t) f(t)。这样做一个积分(可以理解为加权平均)就能得到 f ( x ) f(x) f(x)的表达式了。

假设 E E E为采样次数的数学期望,那么 E = ∫ 0 1 f ( t ) d t + 1 E=\int_0^1{f(t)dt}+1 E=01f(t)dt+1

这个式子的含义是,先随机出现一个点(这是+1的含义),再按照这个点的值进行加权平均(也就是积分的含义)。

E E E就是在连续情形下,王荣的摸牌数。

接下来,我们开始解这个函数。

首先,发现一个很简单的事实, f ( 0 ) = f ( 1 ) = E f(0)=f(1)=E f(0)=f(1)=E

显然,这个函数关于 x = 1 2 x=\frac{1}{2} x=21是对称的。那么,我们来求一下 f ( 1 2 ) f(\frac{1}{2}) f(21)的值。

f ( 1 2 ) = ∫ 1 2 1 f ( t ) d t + 1 = ∫ 0 1 2 f ( t ) d t + 1 f(\frac{1}{2})=\int_\frac{1}{2}^1{f(t)dt}+1=\int_0^\frac{1}{2}{f(t)dt}+1 f(21)=211f(t)dt+1=021f(t)dt+1

2 f ( 1 2 ) = ∫ 0 1 f ( t ) d t + 2 = E + 2 2f(\frac{1}{2})=\int_0^1{f(t)dt}+2=E+2 2f(21)=01f(t)dt+2=E+2

f ( 1 2 ) = 1 2 E + 1 2 f(\frac{1}{2})=\frac{1}{2}E+\frac{1}{2} f(21)=21E+21

0 ≤ x ≤ 1 2 0\leq x\leq \frac{1}{2} 0x21时,我们对 f ( x ) = ∫ x 1 f ( t ) d t + 1 f(x)=\int_x^1{f(t)dt}+1 f(x)=x1f(t)dt+1两边求导,得

f ′ = − f f'=-f f=f

这是一个比较简单的常微分方程,接下来需要一点点常微分方程的知识。

d f d x = − f \frac{df}{dx}=-f dxdf=f

d f f = − d x \frac{df}{f}=-dx fdf=dx

d l n f = − d x dlnf=-dx dlnf=dx

l n f = − x + C 1 lnf=-x+C_1 lnf=x+C1

f = e − x + C 1 = C e − x f=e^{-x+C_1}=Ce^{-x} f=ex+C1=Cex

于是我们解得 f = C e − x f=Ce^{-x} f=Cex

代入 x = 0 x=0 x=0 x = 1 2 x=\frac{1}{2} x=21
{ C e 0 = E C e − 1 2 = 1 2 E + 1 2 \begin{cases} Ce^0=E \\ Ce^{-\frac{1}{2}}=\frac{1}{2}E+\frac{1}{2} \end{cases} {Ce0=ECe21=21E+21

解得 C = E = 1 2 e − 1 2 − 1 C=E=\frac{1}{2e^{-\frac{1}{2}}-1} C=E=2e2111

于是得到,当 0 ≤ x ≤ 1 2 0\leq x\leq \frac{1}{2} 0x21时, f ( x ) = e − x 2 e − 1 2 − 1 f(x)=\frac{e^{-x}}{2e^{-\frac{1}{2}}-1} f(x)=2e211ex

由于 f ( x ) f(x) f(x)关于 x = 1 2 x=\frac{1}{2} x=21对称,可对称地写出 1 2 < x ≤ 1 \frac{1}{2}<x\leq 1 21<x1的情况。于是我们可以得到 f ( x ) f(x) f(x)的表达式。

f ( x ) = { e − x 2 e − 1 2 − 1 0 ≤ x ≤ 1 2 e x − 1 2 e − 1 2 − 1 1 2 < x ≤ 1 f(x)=\begin{cases} \frac{e^{-x}}{2e^{-\frac{1}{2}}-1} &0\leq x\leq\frac{1}{2} \\ \frac{e^{x-1}}{2e^{-\frac{1}{2}}-1} & \frac{1}{2}<x\leq 1 \end{cases} f(x)= 2e211ex2e211ex10x2121<x1

E = 1 2 e − 1 2 − 1 ≈ 4.69 E=\frac{1}{2e^{-\frac{1}{2}}-1}\approx4.69 E=2e21114.69即为我们所求的答案。

可以发现,连续情形就是离散情形在 n → ∞ n\to\infty n时的情况。而指数函数在离散情形下对应的其实就是等比数列。

总结

本文先将问题作为离散情形进行处理,将问题中的n=13推广到了n为任意奇数的情况(偶数情形略有不同,也可以做,但是没有什么意义,笔者就没有单独列出了)。并且将问题推广到了 n n n + ∞ +\infty +的情形,即连续情形。从而彻底解出了王荣吉占背后的数学模型。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值