概率初步笔记
来源:互联网 发布:ajax json 解析 编辑:程序博客网 时间:2024/06/16 22:39
1.样本空间
2.概率测度
3.概率测度满足一些性质:
4.全概率公式:
如果
例子:
一座学校里,有OI班和普通班。
OI班有
这样OI班和普通班就把整个学校里的班级划分成了两个部分。
每个OI班里有
每个普通班里有
(一本正经)
现在随机挑一个学生,问是妹子的概率?
这样就直观地表示了全概率公式。
5.贝叶斯公式:
这个公式就是逗你玩的,推导过程的话其实是
注意,
这个公式在计算逆向概率很有用。
6.随机变量:
随机变量
它是定义在样本空间的一个函数(实数)。
比如:
7.随机变量的期望:
其中
太抽象了,举个例子:
实验是从刚刚那个学校里抽一个学生。
样本空间是所有学生组成的集合。
随机变量X是抽出来的那个学生的性别。
其实当
8.期望的线性性:
设
9.全期望公式:
设有两个随机变量
定义
那么有
合起来写的话
10.概率转移网络:
一个带起点的有向网络,在
似乎期望题都要倒着推……并不知道为什么……
SDOI2012是一个高斯消元的题目,
#include <bits/stdc++.h>#define Rep(i,n) for(int i = 1;i <= n;i ++)#define RepG(i,x) for(int i = head[x];~ i;i = edge[i].next)#define v edge[i].to#define Dwn(i,n) for(int i = n;i;i --)using namespace std;const int N = 20005;inline int read(){ int a=0,f=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();} while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();} return a*f;}int stk[N],tp,low[N],dfn[N],bel[N],scc,n,m,S,T,vis[N],ran[N],d[N],head[N],cnt,tim;double f[N],a[105][105],ans[105];vector<int>vec[N];const double eps = 1e-7;bool sgn(double t){return fabs(t) > eps;}struct Edge{int next,to;}edge[N*100];void save(int a,int b){edge[cnt] = (Edge){head[a],b},head[a] = cnt ++;d[a] ++;}void dfs(int x){ low[stk[++ tp] = x] = dfn[x] = ++ tim; RepG(i,x) if(!dfn[v])dfs(v),low[x] = min(low[v],low[x]); else if(!bel[v])low[x] = min(low[x],dfn[v]); if(low[x] == dfn[x]) { int y,lst = 0;++ scc; do{bel[y = stk[tp --]] = scc;vec[scc].push_back(y);ran[y] = ++ lst;}while(y != x); }}void Gauss(int nn){ double x;int j; Rep(i,nn) { for(j = i;j <= nn;++ j)if(sgn(a[j][i]))break; if(j > nn)continue; if(i != j)Rep(k,nn + 1)swap(a[i][k],a[j][k]); for(j = i + 1;j <= nn;++ j) { x = a[j][i] / a[i][i]; if(!sgn(x))continue; for(int k = i;k <= nn + 1;++ k)a[j][k] -= a[i][k] * x; } } memset(ans,0,sizeof(ans)); Dwn(i,nn) { ans[i] = a[i][nn + 1]; if(fabs(a[i][i]) < eps) { printf("INF\n"); exit(0); } for(int j = i + 1;j <= nn;++ j)ans[i] -= a[i][j] * ans[j]; ans[i] /= a[i][i]; }}void dfs2(int y){ vis[y] = -1; if(y == bel[T]){vis[y] = 1;return;} for(int j = 0;j < vec[y].size();++ j) { int x = vec[y][j]; RepG(i,x) { if(bel[v] == y)continue; if(!vis[bel[v]])dfs2(bel[v]); if(vis[bel[v]] == 1)vis[y] = 1; } }}void solve(int xx){ int nn = vec[xx].size(); for(int yy = 0;yy < nn;++ yy) { int x = vec[xx][yy]; RepG(i,x)if(bel[v] != xx && !vis[bel[v]])solve(bel[v]); } memset(a,0,sizeof(a)); for(int i = 1;i <= nn;++ i) { a[i][i] = 1; if(vec[xx][i - 1] == T)continue; a[i][nn + 1] = 1; int x = vec[xx][i - 1]; RepG(j,x) { int vv = edge[j].to; if(bel[vv] == xx)a[i][ran[vv]] -= 1.0 / d[x]; else a[i][nn + 1] += 1.0 / d[x] * f[vv]; } } Gauss(nn); Rep(i,nn)f[vec[xx][i - 1]] = ans[i]; vis[xx] = 1;}int main (){ scanf("%d%d%d%d",&n,&m,&S,&T); memset(head,-1,sizeof(head)); Rep(i,m){int A,B;A = read(),B = read(),save(A,B);} Rep(i,n)if(!dfn[i])dfs(i); memset(vis,0,sizeof(vis)); dfs2(bel[S]); Rep(i,scc)if(vis[i] < 0)return puts("INF"),0; memset(vis,0,sizeof(vis)); solve(bel[S]); printf("%.3f\n",f[S]); return 0;}
0 0
- 概率初步笔记
- 离散概率初步 一、全概率公式
- 离散概率初步 By ACReaper
- 初步笔记
- 【机器学习】Tensorflow:概率编程初步印象
- 学习笔记-概率问题
- 概率统计笔记1
- 概率学习笔记
- bash初步学习笔记
- oracle 初步学习笔记
- html初步学习笔记
- awk 初步学习笔记
- tofrodos 初步学习笔记
- Verilog初步学习笔记
- 1.Rails初步笔记
- python初步笔记
- JDBC 初步笔记1
- JDBC 初步笔记2
- 【51Nod 1246】罐子和硬币
- caffe的solverstate的使用
- 程序员最害怕的5件事 你中招了吗?
- matplotlib--Legend
- 欢迎使用CSDN-markdown编辑器
- 概率初步笔记
- Web系统大规模并发——电商秒杀与抢购
- Map的keySet()方法 Iterator迭代的遍历
- AutoCompeleteTextView无条件显示下拉框列表(参考别人)
- TortoiseGit 更新Github 原作者的修改 然后提交到自己的Repository
- Mybatis的动态sql详解
- Pentaho BI Server的启动过程详解(二)
- [Google APAC 2017] Lazy Spelling Bee
- 初识Volley