1. 问题描述

连续抛一枚硬币,连续出现若干次正面即停止,求所抛总次数的期望。

2. 求解期望

记硬币出现正面的概率为$p$,停止条件中连续出现正面的次数为$n$,所抛总次数的期望为$\mu_n$。考虑如下情形:首次出现连续$n-1$次正面,此时所抛总次数的期望为$\mu_{n-1}$。再抛一次,结果有且只有一下两种:

  • A. 出现正面,则满足停止条件,所抛总次数的期望为$\mu_{n-1}+1$
  • B. 出现反面,则立即回到初始状态,相当于从0开始再抛出$n$次连续正面,因此总次数的期望为$\mu_{n-1}+1+\mu_n$。A、B两种情况的概率分别为$p,1-p$。因此有

$$\begin{equation} \label{munAB} \mu_n=p(\mu_{n-1}+1)+(1-p)(\mu_{n-1}+1+\mu_n) \end{equation}$$

$$\begin{equation} \label{munDev} \mu_n=\frac{1}{p}(\mu_{n-1}+1) \end{equation}$$

展开,得通项公式

$$\begin{equation} \label{} \end{equation}$$

$$\begin{equation} \label{munGen} \mu_n=\frac{s(1-s^n)}{1-s}, \quad s=\frac{1}{p} \end{equation}$$

特别的,对于一枚均匀硬币,$p=1/2$,因此$\mu_n=2^{n+1}-2$。

3. 概率计算

进一步考虑该问题,尝试求解连续抛出$n$次正面时,所抛总次数为$m$的概率$P(n,m)$。显然,

$$P(n,m)=0 \quad m<n \\ P(0,m)=\left\{ \begin{array}{P0m} 1 & m=0 \\ 0 & m \ge 1 \end{array} \right. $$

依然考虑第2节中的两种情况。

  • 对于A,在首次连续出现$n-1$次正面的情况下,再抛一次出现正面,满足停止条件,因此需要前面总共抛了$m-1$次,这一概率为$P(n-1,m-1)$。
  • 对于B,设首次连续出现$n-1$次正面时,已经抛了$k$次,再抛一次出现反面,立即回到初始状态,因此,要满足总次数为$m$,需要在后续的步骤里,恰好用$m-k-1$次抛出$n$次连续正面。因此B情况下的条件概率为$\sum_{k}P(n-1,k)P(n,m-k-1)$。

由全概率公式,得

$$\begin{equation} \label{PnmDev} P(n,m)=pP(n-1,m-1)+(1-p)\sum_{k}P(n-1,k)P(n,m-k-1) \end{equation}$$

实际上,可以由$P(n,m)$的递推式($\ref{PnmDev}$)得出$\mu_n$的递推式($\ref{munDev}$)。依据期望的定义

$$\mu_n=\sum_{m}mP(n,m) \\ =p\sum_{m}mP(n-1,m-1)+(1-p)\sum_{m}\sum_{k}mP(n-1,k)P(n,m-k-1) $$

第一项中的求和式可以写成

$$\sum_{m-1}(m-1+1)P(n-1,m-1)=\sum_{m-1}(m-1)P(n-1,m-1)+\sum_{m-1}P(n-1,m-1) \\ =\mu_{n-1}+1$$

第二项中的求和式可以写成

$$\sum_{m}\sum_{k}(k+1+m-k-1)P(n-1,k)P(n,m-k-1) \\ =\sum_k kP(n-1,k)\sum_m P(n,m-k-1) + \sum_k P(n-1,k)\sum_m P(n,m-k-1) + \sum_k \sum_m (m-k-1)P(n-1,k)P(n,m-k-1) \\ = \mu_{n-1}+1+\mu_{n}$$

可证。

4. 数值结果

根据$P(n,m)$的递推式($\ref{PnmDev}$),写出对应的Matlab程序如下。

N = 6;    % numbers of continuous positive in stop conditions
M = 3000; % total times when stop condition satisfied
p = 1/2;  % probability of positive% Initial Conditions. P is a matrix in size of N+1,M+1 and the element
% with index n+1,m+1 stands for P(n,m) because there are no index 0.
P = zeros(N+1,M+1);
P(1,1) = 1;
% Iteration
for nn = 1:Nfor mm = 1:Mtmp = 0;for kk = nn-1:mm-nn-1tmp = tmp + P(nn-1+1,kk+1)*P(nn+1,mm-kk-1+1);endP(nn+1,mm+1) = P(nn-1+1,mm-1+1)*p + tmp*(1-p);end
end
P=P(2:end,2:end)';  % get rid of P(0,m) & P(n,0)
semilogy(P); % no plot of P(0,m)
disp(['Check the sum of probability:']);
disp(sum(P));
disp(['Compute the expectation of total times:']);
disp((1:M)*P);

为了产生直观的印象,对$p=1/2$的情况计算前面几项的结果。计算$N=3,M=16$,作出$P(n,m)$的半对数图如下。

为了验证$\sum_{m}P(n,m)=1$,以及根据此概率求期望$\sum_{m}mP(n,m)$,将$N,M$增大至$6,5000$。程序输出为

Check the sum of probability:1.0000    1.0000    1.0000    1.0000    1.0000    1.0000Compute the expectation of total times:2.0000    6.0000   14.0000   30.0000   62.0000  126.0000

显然,验证了概率之和为1。另外,容易验证所求出的期望与$\mu_n$的通项公式($\ref{munGen}$)给出的结果是一致的。

5. 模拟验证

使用Mote Carlo模拟的方法对这一问题进行仿真,代码如下

len = 2e8;   % length of random numbers
N = (1:6)';  % numbers of continuous positive in stop conditionsfor pp = 1:length(N)res = rand(len,1)>0.5;    % uniform distribution, >0.5 stands for positivecurrTotalTime = 0; % total times when stop condition satisfiedcontPosCntr = 0;   % continuous positive appearsnumExper = 0;totalTimeRcd = nan(len,1);for ii = 1:lencurrTotalTime = currTotalTime+1;if (res(ii))contPosCntr = contPosCntr+1;elsecontPosCntr = 0;endif (contPosCntr>=N(pp))numExper = numExper+1;totalTimeRcd(numExper) = currTotalTime;contPosCntr = 0;currTotalTime = 0;endendmeanT = mean(totalTimeRcd(1:numExper));
end

结果如下:

N=1: 2.000015
N=2: 6.000249
N=3: 14.001627
N=4: 29.985933
N=5: 62.000438
N=6: 126.052749

与理论结果一致。

6. 附注

该问题还有其他表现形式,如:

  • 有一个通关游戏,设每关所需的时间固定为1,而通关概率为p。如果某关失败,则必须重新从第一关打起。问通关的平均时间。

这类问题本质上是一致的,都可以归结为在一系列连续实验中,首次连续出现n次成功的平均时间。

转载于:https://www.cnblogs.com/aquastone/archive/2012/10/19/Prob_CoinContinuousNPositive.html

抛硬币直到连续若干次正面相关推荐

  1. python抛硬币正面向上概率_Python-计算抛硬币出现连续10次正面朝上的概率的仿真实验...

    前言 本人是大一刚入学没多久的新生,第一次写博客可能某些方面不太好望大家多多谅解!您觉得写得不好的地方,欢迎加大力度开口喷/滑稽~ 1.问题重述 抛硬币100次,问出现10次连续正面朝上的概率为多少? ...

  2. 抛硬币直到连续2次正面的概率

    一个硬币,抛到head的概率是0.5,需要抛多少次(期望次数)才能连续抛出2次(n次)head? 假设期望次数为N,要连续2次得到head,至少得抛2次.那么要得到连续两次head,会有下面三种情况. ...

  3. 抛硬币 直到连续出现两次字为止

    题目: [plain] view plaincopy 假设有一个硬币,抛出字(背面)和花(正面)的概率都是0.5,而且每次抛硬币与前次结果无关.现在做一个游戏,连续地抛这个硬币,直到连续出现两次字为止 ...

  4. 抛硬币直到若干次(k次)连续正面向上的概率

    文章目录 问题描述 说明 解答过程 问题描述 问题描述:抛一枚硬币,当出现连续的三次(或k次)正面向上的时候停止,问抛硬币的次数期望是多少? 说明 这个问题网上有很多答案,解释都不清楚,很多解释都误导 ...

  5. 抛硬币直到出现连续N次正面为止的期望

    做项目时遇到这样一个问题,问题可以简化为 问题1:已知一件事情发生的概率是p,连续对这件事情进行很多次实验直到这件事连续发生了n次,求需要进行多少次实验次数的期望. 问题2:如果用抛硬币来举例子,则为 ...

  6. 抛硬币第一次出现连续两个正面的期望次数

    题目描述:假设有一个硬币,抛出字(背面)和花(正面)的概率都是0.5,而且每次抛硬币与前次结果无关.现在做一个游戏,连续地抛这个硬币,直到连续出现两次字为止,问平均要抛多少次才能结束游戏?注意,一旦连 ...

  7. python抛硬币正反面的概率_抛硬币连续N次正面后再次正面的概率是多少呢?有疑虑的话咱用Python模拟一下吧...

    Python不用学,看看你就懂:拿来就能用,用用你就会 无需安装编程软件,把代码拷贝到在线编辑器即可运行 抛硬币连续N次正面后下一次还是正面的概率是多少呢? 这是一个答案似乎很肯定但心里又不踏实的问题 ...

  8. 抛硬币1000次,至少连续10次正面朝上的概率 详细解答

    1. 起因 看论文的时候,论文里简单提了一下.大概意思是,抛硬币1000次,至少连续10次正面朝上的概率比较大.我无聊就算了一下(后来就想拍死这个无聊的自己T^T). 2. 问题陈述 一开始没什么思路 ...

  9. 连续抛硬币,出现【反反正】你赢,出现【正反反】我赢

    假设一天抛10000次,连续抛十天 可以看到我的钱 始终比你的多 说明[正反反]的概率比[反反正]大 一是因为前两次正反比反反更容易出现,因为有人做过实验,最后统计出来正面出现的概率确实是反面大 二是 ...

最新文章

  1. 2.12 向量化更多例子-深度学习-Stanford吴恩达教授
  2. 在10分钟内在新Mac中设置Java开发环境(更新)
  3. HTTP 数据包头解析
  4. 如何实现listbox选项,然后双击鼠标实现选项的删除
  5. leetcode509. 斐波那契数(矩阵快速幂)
  6. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
  7. 今天最好的生日礼物就是重新找到目标
  8. 字节跳动将推出汽车云业务,计划2025年追赶腾讯
  9. RHEL6与Oracle 11G R2之开篇:安装
  10. POI设置excle单元格样式
  11. VS2015sql本地服务器为空,详解VS2015自带LocalDB数据库用法实例
  12. 左耳朵耗子:公司监控员工行为,这事逻辑就不对
  13. Android app接入微信人脸支付详解
  14. 大数据平台核心架构图鉴,建议收藏!
  15. cesium中文教程(cesium中文教程PDF)
  16. 2021-08-25用ensembl下载小鼠与人的对应文件
  17. mac下vscode代码格式化及其他常用快捷键
  18. ios代码中的内存泄露,内存检测工具leaks 检测不出来
  19. html input onfocus
  20. oracle获取字符串最后一个逗号后面的字符

热门文章

  1. Non-static field ‘func1‘ cannot be referenced from from a static context
  2. 天天生鲜的用户登录机制和redis的作用
  3. html放缩都让内容处于正中间
  4. ubuntu19.10安装remarkable
  5. js回调函数的理解(轉)
  6. python 的几个内置函数(lambda ,zip, filter, map, reduce )用法
  7. 剑指offer(C++)——链表中环的入口结点
  8. Semaphore用法
  9. 音频降噪处理+java_适当的音频捕获和降噪
  10. 时序轮转的意思_天地是景框时序轮转的风景----(傻女人)