首页 > 其他分享 >概率与数学期望笔记

概率与数学期望笔记

时间:2023-08-21 15:36:29浏览次数:34  
标签:13 概率 frac int 54 sum 笔记 times 期望

概率论

样本点:一个随机试验的某种可能的结果。

样本空间 \(Ω\):所有可能结果构成的集合

随机事件 \(A\):在一个给定的样本空间中,样本空间的子集,即由多个样本点构成的集合。

随机变量 \(P(A)\):把样本点映射为实数的函数,分为离散型、连续型。离散型随机变量的取值为有限或实数。

我们称 \(P(A)\) 为随机事件 \(A\) 发生的概率,概率是对随机事件发生可能性的一个度量方式,是 \([0,1]\) 之间的一个实数。需要满足以下条件:

  1. \(P(A) \geq 0\)
  2. \(P(Ω) = 1\)
  3. 对于两两互斥的事件 \(A_1,A_2,...\) 有 \(\sum P(A_i)=P(\cup A_i)\)

数学期望

简而言之:它是概率和随机变量取值乘积之和。

若随机变量 \(X\) 的取值有 \(x_1,x_2,...\) ,一个随机事件可以表示为 \(X=X_i\) 其概率为 \(P(X=X_i)=p_i\),则它的数学期望为 \(E(x)=\sum p_i \times x_i\)

例如投掷 \(2\) 枚骰子的实验,两个骰子为 \(x\) 和 \(y\)。

样本空间:共有 \(36\) 个样本点,每个样本点可以写作 \((x,y)\) \(1\leq x,y \leq 6\)

随机变量,取值范围为 \([2,12]\),\(x+y=X\) 的样本点 \((x,y)\) 构成的子集。

两个骰子掷出的点数的数学期望为 \(7\)

数学期望的线性

满足 \(E(aX+bY)=a \times E(X) + b \times E(Y)\)

因此可以对数学期望进行递推求解

用随机变量 \(X\) 表示掷出一个骰子的点数,显然期望值为 \(E(X)= (1+2+3+4+5+6) \div 6=3.5\),而 \(2\) 枚骰子的期望为 \(2X=7\)。

例题1 T313040 来到人生的米字路口

设 \(f[x]\) 为从节点 \(x\) 走到终点所经过的路径的期望长度。

\[f[x]=\frac{1}{k}\displaystyle\sum_{i=1}^k(f[y_i]+z_i) \]

已知 \(f[N]=0\),求 \(f[1]\)。

注意图要从终点到起点求拓扑排序,即在反图上执行。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
int n,m,in[100009],res[100009];
double ans[100009];
vector<int> to[100009];
vector<ll> dis[100009];
queue<int> q;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		to[v].push_back(u);
		dis[v].push_back(w);
		in[u]++,res[u]++;
	}
	for(int i=1;i<=n;i++){
		if(!in[i])  q.push(i);
	}
	while(!q.empty()){
		int fnt=q.front();
		q.pop();
		for(int i=0;i<to[fnt].size();i++){
			int y=to[fnt][i];
			ans[y]+=(ans[fnt]+dis[fnt][i])*1.0/in[y];
			res[y]--;
			if(res[y]==0)  q.push(y);
		}
	}
	cout<<fixed<<setprecision(2)<<ans[1]<<endl;
	return 0;
}



例题2 弥留之国的Alice

DAG,有明确的起点和任意终点(并不唯一,小王和大王可以代替某花色)

状态 \(f[a,b,c,d,x,y]\) 来代表 \(4\) 种花色和大小王目前翻开“\(a\) 为黑桃,\(b\) 为红桃,\(c\) 为梅花,\(d\) 为方块,\(x\) 为小王,\(y\) 为大王”时的张数的期望。

当前已经翻开的牌数为 \(sum=a+b+c+d+(x\neq 4)+(y\neq 4)\)。当前没翻开的牌数是 \(54-sum\),其中有 \(13-a\) 张红桃, \(13-b\) 张黑桃,以此类推。

然后,翻开 \(1\) 张黑桃的概率为 \(\frac{13-a}{54-sum}\)。翻开之后,还需要翻开的张数的期望值是 \(f[a+1,b,c,d,x,y]\)。红桃、梅花、方块同理。

考虑小王大王的情况:

当 \(x=4\) 时,有 \(\frac{1}{54-sum}\) 的概率翻开小王。可以把小王看作某种花色,选择期望值最小的,把小王用作某种花色 \(min_{0 \leq x' \leq 3}\) \(f[a,b,c,d,x',y]\)。大王以此类推。

整体来看,状态转移是四种颜色的期望加上大小王的期望。

\(f[a,b,c,d,x,y]= 1+\)

$\frac{13-a}{54-sum} \times f[a+1,b,c,d,x,y] + $

$\frac{13-b}{54-sum} \times f[a,b+1,c,d,x,y] + $

$\frac{13-c}{54-sum} \times f[a,b,c+1,d,x,y] + $

$\frac{13-d}{54-sum} \times f[a,b,c,d+1,x,y] + $

$\frac{1}{54-sum} \times min_{0 \leq x' \leq 3} fa,b,c,d,x',y + $

\(\frac{1}{54-sum} \times min_{0 \leq y' \leq 3}\) \(f[a,b,c,d,x,y'](y==4)\)

终点时,翻开牌数达到了要求,期望值为 \(0\),黑桃的张数为 \((a+(x==0)+(y==0))=A\)

把在终点时,记为初始状态

把在起点时,记为目标状态:\(f[0,0,0,0,4,4]\)

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f;
int A,B,C,D;
double f[29][29][29][29][5][5];
double dp(int a,int b,int c,int d,int x,int y){
	if(f[a][b][c][d][x][y])  return f[a][b][c][d][x][y];
	int as=a+(x==0)+(y==0);
	int bs=b+(x==1)+(y==1);
	int cs=c+(x==2)+(y==2);
	int ds=d+(x==3)+(y==3);
	if(as>=A&&bs>=B&&cs>=C&&ds>=D)  return 0;
	int w=54-(as+bs+cs+ds);
	double v=0;
	if(a<13)  v+=(13.0-a)*1.0/w*(dp(a+1,b,c,d,x,y)+1);
	if(b<13)  v+=(13.0-b)*1.0/w*(dp(a,b+1,c,d,x,y)+1);
	if(c<13)  v+=(13.0-c)*1.0/w*(dp(a,b,c+1,d,x,y)+1);
	if(d<13)  v+=(13.0-d)*1.0/w*(dp(a,b,c,d+1,x,y)+1);
	if(x==4){
		double tnp=INF;
		for(int i=0;i<=3;i++){
			tnp=min(tnp,1.0/w*(dp(a,b,c,d,i,y)+1));
		}
		v+=tnp;
	}
	if(y==4){
		double tnp=INF;
		for(int i=0;i<=3;i++){
			tnp=min(tnp,1.0/w*(dp(a,b,c,d,x,i)+1));
		}
		v+=tnp;
	}
	return f[a][b][c][d][x][y]=v;
}
int main(){
	cin>>A>>B>>C>>D;
	if(max(0,A-13)+max(0,B-13)+max(0,C-13)+max(0,D-13)>2){
		cout<<"-1.000";
		return 0;
	}
	double ans=dp(0,0,0,0,4,4);
	cout<<fixed<<setprecision(3)<<ans;
	return 0;
}



例题3 T313075 密码破译

把 \(N\) 个自然数 \(A_1,A_2,...,A_N\) 都视作 \(31\) 位长的二进制数,对每一位进行处理,设 \(B\) 序列是一个 \(01\) 序列, \(B_i\) 等于 \(A_i\) 的第 \(k\) 位。

根据 \(l,r\) 的选取方式,长度为 \(1\) 的区间的选择概率为 \(\frac{1}{N^2}\),除此之外其他长的的区间的选出概率为 \(\frac{2}{N^2}\)。那可以依次检查序列 \(B\) 中的每一个数是否为 \(1\),若是为 \(1\),则累加 \(2^k \times \frac{1}{N^2}\) 到答案中。再统计,\(and,or,xor\) 的和为 \(1\) 时,且长度 \(\geq 2\) 的区间个数,计算数学期望,加入对应的答案。

标签:13,概率,frac,int,54,sum,笔记,times,期望
From: https://www.cnblogs.com/11jiang08/p/17646138.html

相关文章

  • halcon 笔记 算子
    1.read_image()*读取图像11.pngread_image(Image,‘11.png’)   *计算图像的通道数count_channels(Image,Num)*循环读取每个通道的图像forindex:=1toNumby1*获取多通道图像中指定的通道图像access_channel(Image,channel,index)endfor*分解通道decompos......
  • 8.21集训笔记
    上午P1789【Mc生存】插火把点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=110;boola[N][N];intn,m,k,x,y;intdx[]={-1,-1,1,1};intdy[]={-1,1,-1,1};boolin(intx,inty){return(x>=1&&x<=n&&y>=1&......
  • 【刷题笔记】27. Remove Element
    题目Givenanarraynumsandavalueval,removeallinstancesofthatvaluein-placeandreturnthenewlength.Donotallocateextraspaceforanotherarray,youmustdothisbymodifyingtheinputarrayin-placewithO(1)extramemory.Theorderofeleme......
  • javascript学习笔记day4
    今天重点学习了数组,老实说学过了c#和python的数组,但是今天重新接触js的数字还是有很多要重新学习的,下面是今天的笔记查询条件五个以上时,switch的效果比iflese高两倍以上.letarr=[]声明数组letarr=newArray(1,2,3,4)声明数组修改数组letarr=['a','b','c']for(letinde......
  • Markdown学习笔记
    Markdown学习标题两个井号加空格三级标题四级标题字体Hello,World!左右一颗*Hello,World!左右两颗*Hello,World!左右三颗*Hello,World!左右来两个~引用狂神说单箭头 分割线图片感叹号+方括号内放图片的命名+圆括号放图片的本地或网络地址超链接点击跳转......
  • python刷小红书流量(小眼睛笔记访问量),metrics_report接口,原理及代码,以及x-s签名验证202
    一、什么是小眼睛笔记访问量 如下图所示,为笔记访问量。二、小眼睛笔记访问量接口1、urlhttps://edith.xiaohongshu.com/api/sns/web/v1/note/metrics_report2、payloaddata={"note_id":note_id,"note_type":note_type,"report_type":1,......
  • SpringSecurity实战笔记之OAuth
    ===================SpringSocialOAuth================一、app、小程序、前后端分离为什么使用OAuth协议1、原有方法开发繁琐、安全性和客户体验差、有些前端技术不支持cookei,如小程序2、好处:token自动生成,自定义校验,方便安全二、SpringSecurityOAuth简介1、......
  • 前端学习笔记202308学习笔记第七拾玖天-Map之2
    ......
  • Manacher笔记
    Manacher算法应用于一种特定的场景:查找一个长度为\(n\)的字符串\(S\)的最长回文子串,Manacher的复杂度为\(O(n)\),是这种场景中效率最高的算法。首先对字符串\(S\)做一个变换来化简问题,原字符串的“中心字符”可能有一个或者两个。在\(S\)的每个字符左右各插入一个不......
  • 背包DP笔记
    背包问题01背包问题有\(n\)件物品和一个容量为\(V\)的背包,第\(i\)件物品的体积为\(w[i]\),价值为\(v[i]\)。请选择将哪些物品装入背包,使得价值总和最大。思路:每种物品仅有一件,可以选择放或不放。令\(f[i][j]\)表示前\(i\)件物品放入一个容量为\(j\)的背包可以获......