抛硬币有连续x次正面的期望

首先来看期望的基本公式

抛硬币有连续x次正面的期望_第1张图片

其中x是抛x次,p是在抛第x次后出现连续正面的概率

先来看出现1次正面的期望

按照公式来算是

抛1次 1/2的概率

抛2次 1/4的概率

抛3次 1/8的概率...

我们可以写一个程序试一下

signed main()
{
	ios_base::sync_with_stdio(0); cin.tie(0),cout.tie(0);
	double z=0.5,f=0.5;
	double res=0;
	for(int i=1;i<100000;i++)
	{
		res+=i*z;
		z*=f;
	}
	cout<

每次都需要多乘一个反面的概率,跑个1e5次最后的结果是2

其实我们也可以不用这公式

设抛x次需要的期望是E(x)

E(1)=E(0)+0.5*1+0.5*(1+E(1))

就是刚开始是E(0)也就是抛0次连续的正面需要的期望是0

E(0) 接下来有两个操作

0.5的概率正面就是结束了也就是0.5*1,1是操作次数

0.5的概率反面,也就是继续抛直到抛到E(1)的时候结束0.5(1+E(1)),1+E(1)是操作次数

所以E(1)=E(0)+0.5*1+0.5*(1+E(1))

由上面可以推出E(x)=E(x-1)+0.5*1+0.5*(1+E(x))

应该可以通过矩阵快速幂求递推式

矩阵快速幂后面再补上

你可能感兴趣的:(概率论,算法)