首页 > 其他分享 >【专题】概率期望

【专题】概率期望

时间:2024-10-23 11:10:31浏览次数:6  
标签:邮票 概率 frac int ans1 ans2 专题 期望

前言

期望的计算公式:

\[E(X) = \sum_i{i\times P(x=i)} \]

期望的线性性:

\[E(X+Y) = E(X)+E(Y), E(kX) = kE(X) \]

百事世界杯之旅

[SHOI2002]百事世界杯之旅

题目描述

假设有 \(n\) 个不同的球星名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?

解:

令\(f(i)\)表示现在收集了\(i\)个球星名字的情况下,还需要购买饮料的期望次数。

\[f(i)=1+\frac{i}{n}f(i)+\frac{n-i}{n}f(i+1) \]

显然\(f(n)=0\),于是倒推出\(f(0)\)就得到答案了。

然后进行一个自己推自己,就得到了:

\[f(i)=f(i+1)+\frac{n-i}{n} \]

这题的输出格式有点谔谔

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long

int get(int x){
	int ret = 0;
	while(x){
		ret++;
		x /= 10;
	} return ret;
}

int gcd(int x, int y){
	if(!x) return y;
	return gcd(y%x, x);
}

// f(x) = f(x+1)(n-x)/n + f(x)x/n + 1
signed main(){
	int n; scanf("%lld", &n);
	int ans1 = 0, ans2 = 1;
	for(int i = 0; i < n; i++){
		ans1 = ans2*n+ans1*(n-i);
		ans2 *= n-i;
		int qwq = gcd(ans1, ans2);
		ans1 /= qwq, ans2 /= qwq;
	}
	if(ans1 % ans2 == 0){
		printf("%lld\n", ans1/ans2);
		return 0;
	}
	int ans3 = ans1/ans2;
	ans1 = ans1%ans2;
	for(int i = 1; i <= get(ans3); i++)
		putchar(' ');
	printf("%lld\n", ans1);
	if(ans3) printf("%lld", ans3);
	for(int i = 1; i <= get(ans2); i++)
		putchar('-'); putchar('\n');
	for(int i = 1; i <= get(ans3); i++)
		putchar(' ');
	printf("%lld\n", ans2);
	return 0;
} 

收集邮票

收集邮票

题目描述

有\(n\)种邮票,每次买一张,买到每种邮票的概率是相同的(\(\frac{1}{n}\)),但是每次购买邮票的费用不同,第\(k\)次购买需要支付\(k\)元钱。

问收集所有种类的邮票的期望花费。(输出保留二位小数)

解:

如果买了\(m\)次邮票,则花费为\(c=\frac{(m+1)m}{2}\)。
根据期望的线性性,\(E(c) = \frac{1}{2}[E(m^2)+E(m)]\)

根据上一题的结论,对于购买次数的期望有\(f(i)=f(i+1)+\frac{n}{n-i}\)

设\(g(i)\)表示现在收集了\(i\)种邮票的情况下,还需要购买邮票的期望花费。

\[g(i)=\frac{i}{n}{[g(i)+f(i)+1]} + \frac{n-i}{i}{[g(i+1)+f(i+1)+1]} \]

再进行一个自己推自己,简化为:

\[g(i) = \frac{i}{n-i}\times f(i) + g(i+1) + f(i+1) + \frac{n}{n-i} \]

点击查看代码
#include <bits/stdc++.h>
using namespace std;

const int N = 1e4+5;
double f[N],g[N];
int n;

int main() {
	scanf("%d", &n);
	for(int i = n-1; i >= 0; --i){
		f[i] = f[i+1]+(1.0*n)/(1.0*(n-i));
		g[i] = (1.0*i)/(1.0*(n-i))*(f[i]+1);
        g[i] += g[i+1]+f[i+1]+1;
	}
	printf("%.2lf\n", g[0]);
	return 0;
}

标签:邮票,概率,frac,int,ans1,ans2,专题,期望
From: https://www.cnblogs.com/meteor2008/p/18198391

相关文章

  • 六种概率数据结构的详细解释及应用场景
    1/BloomFilter用途:测试一个元素是否可能在一个集合中。原理:BloomFilter使用多个哈希函数将元素映射到一个位数组上。如果所有对应的位都被设置为1,则认为该元素可能在集合中。优点:非常节省空间,因为不需要存储实际的元素,只需存储位图信息。应用:在数据库查询优化、网页缓......
  • 提高组专题 dp4
    A[PA2021]OddeskidodeskiDP挺显然的,但我推错了……。\[\begin{split}dp_{i+1,j,1}&+=\sum(dp_{i,j,1}+dp_{i,j,0})\timesj\\dp_{i+1,j+1,0}&+=\sumdp_{i,j,1}\times(m-j)\\dp_{i+1,j,0}&+=\sumdp_{i,j,0}\times(m-j)\end{split}\]#include&......
  • SciTech-Mathematics-Probability+Statistics-Distribution: distributionFitter(分布
    说明distributionFitter(分布拟合器)以交互方式对导入MATLAB®工作区的数据进行概率分布拟合。您可以从22个内置概率分布集合进行选择,也可以创建您自己的自定义分布。该App在数据直方图上叠加显示拟合分布图。可用的绘图包括:PDF(概率密度函数)、CDF(累积分布......
  • 高斯混合概率假设密度滤波器(GM-PHD)研究(Matlab代码实现)
     ......
  • 算法专题九: 哈希表与字符串
    目录哈希表1.两数之和2.判断是否为字符重拍排3.是否存在重复元素4.存在重复元素Ⅱ5.字母异位词分组字符串1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘哈希表1.两数之和固定一个数,找前面有没有target-x这个数,使用哈希表,每次查找之后......
  • 专题二:操作系统基本原理
    1.操作系统概述操作系统:管理系统的硬件、软件、数据资源控制程序运行人机之间的接口应用软件与硬件之间的接口进程管理存储管理文件管理作业管理设备管理2.进程管理2.1.进程状态(三态模型、五态模型)2.2.★★★信号量与PV操作★★★2.2.1.前趋图2.2.2.进程......
  • F - 期望
    F-期望题意你有\(n\)个开关,每个开关进行操作需要\(t_i\)的时间,有\(\frac{a_i}{b_i}\)的概率可以打开,剩下的概率会导致全部开关关闭,求开启所有开关的期望时间。思路很容易想到先搞出期望DP转移方程,然后就可以贪心地唯一确定操作开关的顺序,即使不幸失败导致所有开关关......
  • 专题(十九)Linux 下的正则表达式
    一、作用与介绍正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式正则表达式是由普通字符与元字符组成普通字符:包括大小写字母、数字、标点符号及一些其它符号元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)......
  • lintsampler:高效从任意概率分布生成随机样本的新方法
    在实际应用中,我们经常需要从给定的概率密度函数(PDF)中抽取随机样本。这种需求在多个领域都很常见,例如:估计统计量进行蒙特卡洛模拟生成粒子系统用于物理仿真对于标准概率分布,如均匀分布或高斯分布(正态分布),numpy和scipy生态系统提供了现成的解决方案。通过numpy.rand......
  • Leetcode 1514. 概率最大的路径
    1.题目基本信息1.1.题目描述给你一个由n个节点(下标从0开始)组成的无向加权图,该图由一个描述边的列表组成,其中edges[i]=[a,b]表示连接节点a和b的一条无向边,且该边遍历成功的概率为succProb[i]。指定两个节点分别作为起点start和终点end,请你找出从起点到终点成......