Dice (III)(概率,期望)

本文探讨了一个经典的概率问题——投掷n面骰子直到所有面至少出现一次的期望次数。文章给出了详细的数学推导过程,并提供了一段C++代码实现,用于计算不同面数骰子的期望投掷次数。

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

Dice (III)

题目链接: link.

原题描述
Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dice, the probability of occurring any face is equal.

For example, for a fair two sided coin, the result is 3. Because when you first throw the coin, you will definitely see a new face. If you throw the coin again, the chance of getting the opposite side is 0.5, and the chance of getting the same side is 0.5. So, the result is

1 + (1 + 0.5 * (1 + 0.5 * …))

= 2 + 0.5 + 0.52 + 0.53 + …

= 2 + 1 = 3

输入
5
1
2
3
6
100
输出
Case 1: 1
Case 2: 3
Case 3: 5.5
Case 4: 14.7
Case 5: 518.7377517640

题意:有一个n面的骰子,每次投掷每个面都是等概率出现,求所有面都出现的期望投掷次数。

题目转化为假设现在已经有m个面投掷出来,要投出m+1个面的期望投掷次数。概率即为(n-m)/n,根据性质概率倒数即为期望n/(n-m)。n(1/1+1/2+1/3+1/4+……+1/n)。

概率期望的性质证明

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
           double sum=0;
           int n;
           cin>>n;
           for(int j=1;j<=n;j++)
           {
               sum=sum+n*1.0/j;
           }
            printf("Case %d: %.9lf\n",i,sum);    
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值