必威体育Betway必威体育官网
当前位置:首页 > IT技术

概率计算器

时间:2019-08-13 17:14:30来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

概率计算

Problem

████[数据删除]

Solution

这道题研究的是连续型变量,那么为了描述它在各个数值的概率,我们可以用概率密度函数来描述。那啥是概率密度函数啊?

看度娘给我们的解释:

duniang

容易知道P(xA)=0AP(x)P(x\leq A)=\int_0^AP(x)P(x≤A)=∫0A​P(x),那P(xA)P(x\geq A)P(x≥A)怎么办?看看度娘给的第二条性质,那么就有P(xA)=10AP(x)P(x\geq A)=1-\int_0^AP(x)P(x≥A)=1−∫0A​P(x)。

那我们来考虑第一个操作对的概率的影响,应该就是

h(x)=f(x)(10xg(x)dx)+g(x)(10xf(x)dx)h(x)=f(x)(1-\int_0^xg(x)dx)+g(x)(1-\int_0^xf(x)dx)h(x)=f(x)(1−∫0x​g(x)dx)+g(x)(1−∫0x​f(x)dx)

同样的我们考虑第二个:

h(x)=f(x)0xg(x)dx+g(x)0xf(x)dxh(x)=f(x)\int_0^xg(x)dx+g(x)\int_0^xf(x)dxh(x)=f(x)∫0x​g(x)dx+g(x)∫0x​f(x)dx

那么我们维护概率密度函数即可。不知道为什么积分后的函数各项系数还是整数,反正用ll存我们就可以在中间计算时避免精度误差了。

由期望的计算式就有E=P(x)xE=\sum P(x)xE=∑P(x)x,所以ans=01xf(x)dxans=\int_0^1xf(x)dxans=∫01​xf(x)dx

注意精度问题。由于double在变量整数部分较大的时候小数部分精度损失严重,我们不妨直接取其小数部分。

Code

#include <algorithm>
#include <iOStream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define rg register
using namespace std;
typedef long long ll;
const int maxn=101;
template <typename Tp> inline int getmin(Tp &x,Tp y){return y<x?x=y,1:0;}
template <typename Tp> inline int getmax(Tp &x,Tp y){return y>x?x=y,1:0;}
template <typename Tp> inline void read(Tp &x)
{
	x=0;int f=0;char ch=getchar();
	while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
	if(ch=='-') f=1,ch=getchar();
	while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
	if(f) x=-x;
}
struct Poly{
	int deg;
	ll a[maxn];
	Poly(){memset(a,0,sizeof(a));deg=0;}
	Poly operator + (const Poly &b)const
	{
		Poly res;res.deg=max(deg,b.deg);
		for(rg int i=0;i<res.deg;i++) res.a[i]=a[i]+b.a[i];
		return res;
	}
	Poly operator - (const Poly &b)const
	{
		Poly res;res.deg=max(deg,b.deg);
		for(rg int i=0;i<res.deg;i++) res.a[i]=a[i]-b.a[i];
		return res;
	}
	Poly operator * (const Poly &b)const
	{
		Poly res;res.deg=deg+b.deg-1;
		for(rg int i=0;i<deg;i++)
		  for(int j=0;j<b.deg;j++)
		    res.a[i+j]+=a[i]*b.a[j];
		return res;
	}
	Poly inte()
	{
		Poly res;res.deg=deg+1;
		for(rg int i=deg;i;i--) res.a[i]=a[i-1]/i;
		return res;
	}
}a,b,fa,fb,st,tmp,sk[100];
int tp,tk,stk[100];
long double ans;
char s[10010];
int main()
{
	#ifndef ONLINE_JUDGE
	freopen("in.txt","r",stdin);
	#endif
	st.a[0]=1ll;tmp.a[1]=1ll;
	st.deg=1;tmp.deg=2;
	while(~scanf("%s",s))
	{
		cin.getline(s,10000);
		ans=0.0;tp=tk=0;
		for(rg int i=0;s[i];i++)
		{
			if(s[i]=='m') stk[++tp]=(s[i+1]=='a'?1:0);
			else if(s[i]=='x'&&s[i+1]=='_') sk[++tk]=st;
			else if(s[i]==')')
			{
				a=sk[tk];b=sk[tk-1];tp--;tk--;
				fa=a.inte();fb=b.inte();
				if(stk[tp+1])
				{
					sk[tk]=a*fb+b*fa;
				}
				else
				{
					fa=st-fa;fb=st-fb;
					sk[tk]=a*fb+b*fa;
				}
			}
		}
		sk[1]=sk[1]*tmp;
		for(rg int i=sk[1].deg;i;i--)
		{
			ans+=1.0*(sk[1].a[i-1]%i)/i;
			if(ans>=1.0) ans-=1.0;
			if(ans<0.0) ans+=1.0;
		}
		printf("%.6Lf\n",ans);
	}
	return 0;
}

相关阅读

统计学与概率的浅谈

前言: 对于统计学,只是本人的浅谈,还请各位指教. 概率论研究什么呢? 随机现象:不确定性与统计规律性 概率论—研究和揭示随机

数据分析的3大作用:解决生活问题、降低被误导概率、职

数据分析能做什么呢?它能更好的解决问题,但同样的它也有很多的坑,那么我们要如何避开这些坑呢?前言说实话,数据分析是人人都会的,只是没

百度竞价新人提升赚钱概率的技巧方法

百度竞价,就是百度上投广告,销售产品的方式。百度竞价因为涉及的因素很多,又是烧广告费,所以对新人来说,门槛比较高,赚钱也比较难。所以

概率论一些知识

  目录 第一节 离散.连续.多维随机变量及其分布 1.1、几个基本概念点 1..2、随机变量及其分布 第二节、从数学期望、方差、协方

如何七周成为数据分析师14:概率论的入门指南

概率是度量一件事发生的可能性,它是介于0到1之间的数值。我们抛一枚硬币,它有正面朝上和反面朝上两种结果,通常用样本空间S表示,S={正

分享到:

栏目导航

推荐阅读

热门阅读