二项分布的例题

该博客探讨了一个数学问题:当一盏灯有概率p在每次拉动开关后改变状态,问拉动n次后灯亮着的概率。通过循环计算所有可能的状态组合,得出灯亮的概率为1减去所有灯未亮状态的概率总和。提供的C++代码实现了这一计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

111111月份不知是深秋还是早冬,寒风翻过窗户与我相会。阵阵的凉意却让我还挺舒服。楼下庭院里的树早已脱去了叶子,光秃秃的枝干张牙舞爪的伸着。在风中摇曳着一棵歪脖子树。树下挂着一盏年久失修的灯。灯是那种老式的灯,开关自然也是拉线开关。透过窗户,看着那泛黄的麻线随风飘荡,我却冒出了个奇怪的想法:假设灯的初始状态是暗的,我每拉动一次开关,灯就会有ppp的概率转换状态(亮->暗 或 暗->亮)。那么当我拉动nnn次之后,灯是亮着的概率是多少呢?

输入描述:

第一行一个t(1≤t≤100)t (1 \le t \le 100)t(1≤t≤100),代表测试数据组数。

对于每一个测试样例, 第一行有一个整数n(1≤n≤100)n (1 \le n \le 100)n(1≤n≤100),和一个实数p(0≤p≤1)p(0 \le p \le 1)p(0≤p≤1), 分别代表拉动开关的次数和灯转换状态的概率ppp。

输出描述:

对于每一个测试样例,输出一个PPP,代表灯是亮着的概率,如果你的答案与正确答案的差的绝对值小于10−410^{-4}10−4则认为正确。

示例1

输入

复制2 1 0.5 2 0.6

2
1 0.5
2 0.6

输出

复制0.500000 0.480000

0.500000
0.480000
#include<bits/stdc++.h>
using namespace std;
int main(){
    int t,n;
    cin>>t;
    double p,f,x;
    for(int i=0;i<t;i++){
    	cin>>n>>p;
    	f=0;
		for(int i=0;i<=n;i+=2){
    	    x=pow(p,i)*pow(1-p,n-i);
    	    f+=x;
	    } 
	    printf("%.6f\n",1-f);
	}
    return 0;
}

### 关于二项分布贝叶斯估计的解释 在统计学中,贝叶斯方法是一种基于先验概率和观测数据更新后验概率的方法。对于二项分布而言,其随机变量 \(X\) 表示独立重复试验中的成功次数,每次试验成功的概率为 \(\theta\)。为了对参数 \(\theta\) 进行贝叶斯估计,通常会采用 Beta 分布作为先验分布[^3]。 #### 示例题假设某工厂生产的产品中有一定比例的次品,经过初步调查发现该产品的合格率为 80%(即失败率)。现在对该产品进行了 10 次抽样检测,其中有 7 次是合格的。试利用贝叶斯估计推断这批产品的实际合格率。 --- #### 解决过程 ##### 定义模型 设每件产品是否合格是一个伯努利实验,其中合格的概率记作 \(\theta\)。那么,在 \(n=10\) 的情况下,观察到的成功次数 \(k=7\) 可以看作是从一个二项分布抽取的结果: \[ P(k|\theta, n) = C_n^k \cdot \theta^k (1-\theta)^{n-k} \] 这里,\(C_n^k\) 是组合数,表示从 \(n\) 中选取 \(k\) 种方式的数量。 ##### 先验分布的选择 根据共轭先验理论,当似然函数为二项分布时,Beta 分布是最常用的先验分布形式。因此,我们可以设定先验分布为: \[ p(\theta | a_0, b_0) = \text{Beta}(\alpha=a_0, \beta=b_0) \] 这里的超参数 \(a_0\) 和 \(b_0\) 对应着先前经验所反映的信息量。如果初始认为合格率为 80%,可以设置 \(a_0=4\) 和 \(b_0=1\) 来近似这一信息。 ##### 后验分布的形式 根据贝叶斯定理,后验分布可写成如下形式: \[ p(\theta|k,n,a_0,b_0) \propto p(k|\theta)p(\theta|a_0,b_0) \] 代入具体表达式并整理得: \[ p(\theta|k,n,a_0,b_0) = \text{Beta}(a=k+a_0,\; b=n-k+b_0) \] 这意味着新的后验分布仍然是一个 Beta 分布,只是它的形状由新加入的数据调整了。 ##### 参数更新后的结果 将上述数值带入公式计算得出最终的后验分布参数: - 新的 \(\alpha_{new}\): \( k + a_0 = 7 + 4 = 11 \) - 新的 \(\beta_{new}\): \( n - k + b_0 = 10 - 7 + 1 = 4 \) 所以,后验分布变为: \[ p(\theta|data) = \text{Beta}(11, 4) \] 此时可以根据此分布进一步分析期望值其他特性。例如,均值可通过下述公式获得: \[ E[\theta] = \frac{\alpha}{\alpha+\beta}=\frac{11}{11+4}=0.733 \] 这表明,考虑到样本数据之后,我们推测的实际合格率大约为 73.3% 左右。 --- ```r library(ggplot2) # 绘制先验与后验对比图 x <- seq(0, 1, length.out = 1000) prior_density <- dbeta(x, shape1 = 4, shape2 = 1) posterior_density <- dbeta(x, shape1 = 11, shape2 = 4) df <- data.frame( x = rep(x, times = 2), density = c(prior_density, posterior_density), distribution = factor(rep(c("Prior", "Posterior"), each = length(x))) ) ggplot(df, aes(x=x, y=density, color=distribution)) + geom_line(size=1) + labs(title="Comparison of Prior and Posterior Distributions", subtitle="Bayesian Estimation with Binomial Likelihood")+ theme_minimal() ``` 以上 R 代码用于绘制先验和后验分布曲线以便直观理解两者差异。 --- #### 结论 通过引入额外的观测数据以及合理的先验假定,能够有效改善对目标参数的认知精度。本案例展示了如何运用贝叶斯框架处理简单的二项分布场景下的估计问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值