统计同一天生日

news/2024/10/18 2:37:55/

蒙特卡罗方法--统计一个班级有同一天生日的同学概率

一个班有多少同学才能,至少有两个人同一天过生日(一年中的某天,不特指同年)的概率>=50%.

分析:

假设一个班有N个人,让每班人数N从10人开始到80人观察同日生机率的变化

每次模拟出10000个班,看有多少个有同一天生日的班,计算频率。

数据结构:

定义一个数组stu[367]保存学生的生日。

每个同学的生日stu[i]的值属于1-365的某个随机值,均匀分布。

算法:

每次模拟出10000个班,

在这10000个班级中,首先给每班的若干人随机生成生日。

再判断该班级中,是否有同一天过生日的。

算法:

判断该 班中是否有同一天过生日的同学,要求用一个函数实现int HaveSameBirthday (int stu[] ,int n){   }     

形参n表示每班人数。

该函数中,循环遍历所有同学是否和其他同学是同一天过生日,即stu[i]j是否等于stu[j]。

如果有同一天生日的,返回1,否则返回0。

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int HaveSameBirthday(int stu[], int n);
int main()
{int Class, N = 10, i;float sum;int stu[367];                        //个人认为定义成81就够了srand((unsigned)time(NULL));for (int N = 10; N <= 80; N++)              //每班人数从10人到80人一级一级增加{sum = 0;for (Class = 1; Class <= 10000; Class++)        //每次假定好人数后模拟10000个班级{stu[365] = { 0 };for (i = 1; i <= N; i++)               //每个班级中随机生成每个人的生日情况{stu[i]=rand()%365+1;           }if (HaveSameBirthday(stu, N))sum++;   //有至少两个人同一天生日的班级,sum++}cout << "每班人数为 " << N << " 人时,有至少两人同一天生日的班级的概率为 " << sum/10000*100<<"%" << endl;}return 0;
}
int HaveSameBirthday(int stu[], int n)
{int i, j,k;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (i != j){if (stu[i] == stu[j]) {k = 1; break;}else k = 0;}}if (k == 1)break;}return k;
}


http://www.ppmy.cn/news/1023623.html

相关文章

【C++】二叉搜索树的模拟实现(K,KV树)递归与非递归方式

文章目录 前言一、K树1.结点的定义2.构造函数3.拷贝构造函数4.赋值运算符重载5.析构函数6.二叉搜索树的查找&#xff08;find&#xff09;1.非递归2.递归 7.二叉搜索树的插入&#xff08;Insert&#xff09;1.非递归2.递归 8.二叉搜素树的删除&#xff08;Erase&#xff09;1.非…

Android图形-Vsync机制

目录 引言&#xff1a; 概念&#xff1a; 刷新率&#xff1a; 帧率&#xff1a; 卡顿与丢帧&#xff1a; Vsync的产生&#xff1a; Vsync的分发过程&#xff1a; 引言&#xff1a; 显示的原理就是通过不断刷新屏幕缓冲区的数据&#xff0c;显示器就可以显示出来。 概念…

leetcode19. 删除链表的倒数第 N 个结点

题目&#xff1a;leetcode19. 删除链表的倒数第 N 个结点 描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 思路&#xff1a; 让前面的节点比后面的节点先走n1步&#xff0c;因为从链表的尾节点的下一个节点开始&…

360安全卫士右下角广告弹窗太多怎么彻底关闭?

360安全卫士右下角广告弹窗太多怎么彻底关闭&#xff1f; 1、卸载360安全卫士&#xff0c;选择继续卸载&#xff0c;并点击下一步&#xff1b; 2、选择广告弹窗太多&#xff0c;并点击下一步&#xff1b; 3、然后被告知升级极速版永久去广告&#xff0c;可以点击一键去广告。 …

轻量的工作流引擎:告别低效,创造新高!

伴随着日益激烈的市场竞争&#xff0c;作为新时代的企业&#xff0c;如何在众多同质化竞争中脱颖而出&#xff0c;占有更多的市场份额&#xff0c;实现更大发展&#xff1f;此时此刻就需要拥有不同寻常的头脑&#xff0c;寻找不平常的路径&#xff0c;轻量的工作流引擎是低代码…

Go 语言面试题(二):实现原理

文章目录 Q1 init() 函数是什么时候执行的&#xff1f;Q2 Go 语言的局部变量分配在栈上还是堆上&#xff1f;Q3 2 个 interface 可以比较吗&#xff1f;Q4 两个 nil 可能不相等吗&#xff1f;Q5 简述 Go 语言GC(垃圾回收)的工作原理Q6 函数返回局部变量的指针是否安全&#xff…

【Mysql】修改definer

修改definer 本文介绍如何修改MySQL中的function、procedure、event、view和trigger的definer 修改function、procedure的definer 首先&#xff0c;我们需要登录MySQL命令行界面&#xff0c;然后执行以下命令&#xff1a; select definer from mysql.proc;这个命令会列出所…

恭喜又一白鲸开源成员成为 Apache SeaTunnel PMC Member

个人简介 王海林 白鲸开源研发工程师GitHub ID&#xff1a;hailin0做过性能监控、数据开发平台等&#xff0c;目前聚焦在数据集成同步及其周边生态的研发 问&#xff1a;作为白鲸开源的一员&#xff0c;您为社区做出过哪些贡献&#xff1f;具体方案&#xff08;代码类&#x…