编写程序计算班级有相同生日的概率

题目描述

设某个学生班级共有n名同学,要求计算该班至少有两位同学具有相同生日的概率是多少(要求保留3位小数,假设—年有365天)?

输入一个整数,表示该班的学生人数

输出一个实数,要求保留3位小数,表示该班至少有两位同学生日相同的概率

编写思路

计算班级至少有两位同学具有相同生日的概率可以使用概率论中的补事件思想。我们可以计算班级没有两位同学生日相同的概率,然后用1减去该概率即可得到所求。

在一个班级中,假设有n名学生,那么总共可能的生日排列方式为365的n次方(每个学生都有365种可能的生日)。而没有两位同学生日相同的排列方式为365乘以364乘以363,一直乘到365减去n加1。因此,班级没有两位同学生日相同的概率可以表示为:

P = 1 – (365 * 364 * 363 * … * (365 – n + 1)) / (365^n)

下面是用C语言实现计算班级至少有两位同学生日相同的概率的代码:

源代码

#include <stdio.h>

int main() {
    int n;
    printf("请输入班级的学生人数:");
    scanf("%d", &n);

    double probability = 1.0;
    for (int i = 1; i <= n; i++) {
        probability *= (365.0 - i + 1) / 365.0;
    }

    probability = 1 - probability;

    printf("班级至少有两位同学生日相同的概率为:%.3f\n", probability);

    return 0;
}

通过输入班级的学生人数,程序会计算出班级至少有两位同学生日相同的概率,并将结果保留3位小数进行输出。

运行截图

图片[1]-编写程序计算班级有相同生日的概率-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞6赞赏 分享