子曰.“狂而不直,侗而不愿,
悾悾而不信,吾不知之矣。”
孔子说:“狂妄但是不正直,幼稚但是不谨慎,看上去诚恳却不受信用,我不知道为什么有人会这样。”
本文讲述了指示器随机变量,和它在程序上的应用。我们需要做出这样的步骤。
1构造指示器随机变量,表现出和式的形式。
2利用期望的线性性质,将期望变成概率。
3求解出某事发生的概率。
首先,随机变量是试验结果的一个实值函数。
给定一个样本空间S,和一个事件A。那么关联到事件A的随机变量被定义如下。
我们从扔一次硬币这个最基础的例子说起。
样本空间为抛一次硬币翻转的样本空间是S={H,T},
P(H)=P(T)=1/2
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=100010,M=3*N;
int h[N],e[M],ne[M];
int idx;
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
double ans;
int n;
void dfs(int u,int dep,int fa)
{
ans+=1.0/dep;
for(int i=h[u];~i;i=ne[i])
{
int j=e[i];
if(j!=fa)
{
dfs(j,dep+1,u);
}
}
}
signed main()
{
memset(h,-1,sizeof h);
cin>>n;
for(int i=1;i<=n-1;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,1,0);
printf("%.10lf",ans);
}
https://www.luogu.com.cn/problem/P1297
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=10000010;
int n,A,B,C,a[N];
double ans;
signed main()
{
scanf("%d%d%d%d%d", &n, &A, &B, &C, a + 1);
for (int i = 2; i <= n; i++)
a[i] = ((long long) a[i - 1] * A + B) % 100000001;
for (int i = 1; i <= n; i++)
a[i] = a[i] % C + 1;
for(int i=1;i<=n;i++)
{
if(i==1)
{
if(a[1]>=a[n])
{
ans+=1.0*a[n]/a[1]/a[n];
}
else
{
ans+=(1.0/a[n]);
}
}
else
{
if(a[i]>=a[i-1])
{
ans+=1.0*a[i-1]/a[i]/a[i-1];
}
else
{
ans+=(1.0/a[i-1]);
}
}
}
printf("%.3lf",ans);
}