概率/期望

本篇博文解析了一道ACM题目,题目要求计算对盒子内的球进行特定操作后的总期望次数。通过数学推导得出操作1次数与最大球编号及初始球集合的最大公约数的关系,并给出操作2期望次数的递推公式。

http://blog.youkuaiyun.com/u014427196/article/details/46425645


http://www.ifrog.net/acm/problem/1055
题意:
一个盒子一开始有n个球,每个球标号唯一,先执行操作1,如果两个球x,y满足|x-y|不在盒子里,那么久把|x-y|放进去,设操作次数为p1,然后执行操作2,不断摸球,直到所有球都被摸过,设操作次数为p2,求p1+p2的期望。
思路:
如果两个球x,y在盒子里,设x>=y,那么gcd(x,y) == gcd(x,x-y),可以推出最后所有数的gcd等价于一开始所有数的gcd,那么操作1的次数就是最大的数/gcd。 
操作2的次数容易推导,设dp[i]表示已经摸了i个球,直到摸完所有球的期望次数。显然有 dp[n]=0,dp[i]=i/n?dp[i]+(n?i)/n?dp[i+1]+1 
化简下dp[n] = 0, dp[i] = dp[i+1]+n/i。 
那么dp[0] = n*Hn,其中Hn是调和级数。 
然后算就行了。 
注意需要特判0。

在 C++ 编程中,“期望概率”不是一个语言特性,而是一个数学或统计学中的概念,通常用于描述一个随机变量的加权平均值,权重是其可能取值的概率。 ### 什么是期望概率期望值(Expected Value),也称为数学期望期望概率,是随机变量在大量重复试验中取值的“平均结果”。对于离散型随机变量 $ X $,其期望值定义为: $$ E(X) = \sum_{i} x_i \cdot P(x_i) $$ 其中: - $ x_i $ 是随机变量的可能取值 - $ P(x_i) $ 是该取值发生的概率 对于连续型随机变量,期望值由概率密度函数积分定义。 --- ### 示例:计算离散随机变量的期望值 假设你有一个骰子,掷出 1 到 6 的概率都是 $ \frac{1}{6} $。期望值为: $$ E(X) = 1 \cdot \frac{1}{6} + 2 \cdot \frac{1}{6} + 3 \cdot \frac{1}{6} + 4 \cdot \frac{1}{6} + 5 \cdot \frac{1}{6} + 6 \cdot \frac{1}{6} = 3.5 $$ 下面是用 C++ 实现的代码: ```cpp #include <iostream> #include <vector> #include <utility> // for std::pair double calculateExpectedValue(const std::vector<std::pair<double, double>>& outcomes) { double expected = 0.0; for (const auto& outcome : outcomes) { expected += outcome.first * outcome.second; } return expected; } int main() { // 每个元素是 (取值, 对应的概率) std::vector<std::pair<double, double>> outcomes = { {1, 1.0/6.0}, {2, 1.0/6.0}, {3, 1.0/6.0}, {4, 1.0/6.0}, {5, 1.0/6.0}, {6, 1.0/6.0} }; double expected = calculateExpectedValue(outcomes); std::cout << "期望值为: " << expected << std::endl; return 0; } ``` --- ### 说明: - `std::pair<double, double>` 表示每个可能的取值和对应的概率- `calculateExpectedValue` 函数通过遍历所有可能的取值和概率,计算期望值。 - 本例中模拟的是一个公平的六面骰子。 --- ### 应用场景: - 风险评估(金融、保险) - 游戏开发(AI 决策) - 机器学习(概率模型) - 模拟和统计分析 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值