Birthday Paradox(生日悖论)(概率)

judge:LightOJ - 1104
vjudge:vjudge
Time limit:2000 ms
Memory limit:32768 kB
OS:Linux
Source:Problem Setter: Jane Alam Jan

描述

Sometimes some mathematical results are hard to believe. One of the common problems is the birthday paradox. Suppose you are in a party where there are 23 people judge:LightOJ - 1104
vjudge:vjudge

Input

judge:LightOJ - 1104
vjudge:vjudge

Output

judge:LightOJ - 1104
vjudge:vjudge

Sample Input

2
365
669

Sample Output

Case 1: 22
Case 2: 30

题意

很有意思的一道题。

有时有些数学结果很难相信。其中一个常见的问题是生日悖论。假设你在一个有23个人的聚会上,包括你。聚会上至少有两个人过同一个生日的可能性有多大?令人惊讶的是,结果超过了0.5。现在你必须做相反的事情。你已经给出了一年中的天数。记住,你可以在一个不同的星球,例如,在火星,一年是669天长。你必须找到在一个聚会上你必须邀请的最少人数,这样在聚会上至少两个人有相同生日的概率至少是0.5。

输入

输入以整数 T ( T ≤ 20000 ) T(T≤20000) T(T≤20000)开始,表示测试用例的数量。

每种情况下,在一行中包含一个整数 n ( 1 ≤ n ≤ 1 0 5 ) n(1≤n≤10^5) n(1≤n≤105),表示行星一年中的天数。

输出

对于每个案例,打印案例编号和所需结果。

思路

先算出没有人生日相同的概率,拿1减去结果即为有人生日相同的概率。

设一年有n天,聚会有m个人(包括自己)。

列出方程: 1 − C n 1 ⋅ C n − 1 1 ⋯ C n − m + 1 1 n m > = 0.5 1-\frac{C^1_n·C^1_{n-1}\cdots C^1_{n-m+1}}{n^m}>=0.5 1−nmCn1​⋅Cn−11​⋯Cn−m+11​​>=0.5

即: n ⋅ ( n − 1 ) ⋯ ( n − m + 1 ) n m < = 0.5 \frac{n·(n-1)\cdots (n-m+1)}{n^m}<=0.5 nmn⋅(n−1)⋯(n−m+1)​<=0.5

为了简化运算,把分子分母分别拆开。
n − 1 n ⋅ n − 2 n ⋯ n − m + 1 n < = 0.5 \frac{n-1}{n}·\frac{n-2}{n}\cdots \frac{n-m+1}{n}<=0.5 nn−1​⋅nn−2​⋯nn−m+1​<=0.5

到这里我相信所有人都会做这道题了。

代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
#define lowbit(a) ((a)&-(a))
#define maxn 100005
#define eps 0.000000001
using namespace std;
typedef long long ll;int main(){//    freopen("in.txt", "r", stdin);ios::sync_with_stdio(false);int T;cin >> T;for(int ca = 1; ca <= T; ca++){int n;cin >> n;double p = 1;int ans = 1;for(int j = n - 1; j >= 1; j--){p *= j * 1.0 / n;if(p - eps <= 0.5) break;ans++;}printf("Case %d: %d\n", ca, ans);}return 0;
}

Birthday Paradox(生日悖论)(概率)相关推荐

  1. python 生日悖论概率计算。

    生日悖论指如果一个房间里有23 或以上人,那么至少有两个人生日相同的 概率大于50%.编写程序,输出在不同随机样本数量下,23 个人中至少两个人生日相同的概率. from random import ...

  2. python生日悖论分析_python 生日悖论概率计算。

    生日悖论指如果一个房间里有23 或以上人,那么至少有两个人生日相同的 概率大于50%.编写程序,输出在不同随机样本数量下,23 个人中至少两个人生日相同的概率. from random import ...

  3. 生日悖论 Birthday Paradox 至少有两人同一天生日概率

    首先我们来看下生日悖论: 假设有n个人,365天的时间,假设所有人生日不相同的概率为(1-P) 第一个人可选择365 天中的任意365天,人数为1时所有人生日不相同的概率为365/365: 第二个人可 ...

  4. python生日相同的概率_用Python对生日悖论问题的验证(含代码)

    相信有不少人以前就有听到过一个悖论,一个班如果有60人,那么这个班里至少有两个人生日相同的概率要大于99%.一开始听到这个结论的时候,我的直觉就告诉我这怎么可能啊是吧,但事实上,这个直觉上十分错误的结 ...

  5. 生日悖论MATLAB仿真

    生日悖论MATLAB仿真 终于熬过了这学期!不知不觉大学的3/8已经过去了.回顾以下本学期让我印象最深刻,也最有成就感的事情是写出了我人生中第一个MATLAB程序!由于先前零基础,所以从idea到co ...

  6. python生日悖论分析_生日悖论

    python生日悖论分析 If you have a group of people in a room, how many do you need to for it to be more like ...

  7. 怎么解决哈希冲突_从生日悖论谈哈希碰撞

    1 前言 前几天和一个大佬交流了几个问题,其中一个关于ID生成的问题推展到了哈希冲突和一个与之相关的一个数学趣题生日悖论. 当时对于两个事情的理解不够深刻,周末花时间仔细研究了一下,发现很有趣,于是觉 ...

  8. PTA14、生日悖论 (10 分)

    14.生日悖论 (10 分) 生日悖论,指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%.尝试编程验证. 验证方法提示:使用从1到365的整数代表生日.测试n次, ...

  9. python语言进行生日悖论分析--随机试验方法

    问题:生日悖论指如果一个房间里有23人或以上,那么至少两个人生日相同的概率大于50%.编写程序,输出在不同随机样本数量下,23个人中至少两个人生日相同的概率. (1)生成23个[1,365]之间的随机 ...

最新文章

  1. TSC打印机DLL说明
  2. c++内存管理的一些资料
  3. python中csv文件通过什么表示字符_python – 如果行包含CSV文件中的字符串,则删除该行...
  4. 开启SAP CDS view DCL前后的读取性能对比
  5. rds基于什么开发_IaaS、PaaS、SaaS、DaaS都是什么?现在怎么样了?终于有人讲明白了...
  6. 前端学习(1484):json-server工具使用
  7. sklearn tfidf求余弦相似度_【基础算法 】文本相似度计算
  8. Java IDEA使用详解
  9. 块级、行内元素水平垂直居中方法
  10. 我的随身电脑-千脑(转载)
  11. VS2013密钥 VS2013专业版密钥 VS2013旗舰版密钥
  12. ZigBee协议栈简介
  13. 5种好看实用的字体分享
  14. Windows下Postman安装以及汉化
  15. 02-ElasticSearch创建索引
  16. 结构化数据、半结构化数据和非结构化数据
  17. 计算机无法访问苹果相册,iPhone与电脑连接后找不到照片怎么办?掌握这三个技巧,烦恼问题轻松解决!...
  18. 文博界最早利用计算机技术的,现代计算机技术博物馆中的应用
  19. ConfigurationChanged流程梳理(屏幕旋转、语言及字体切换)
  20. ElasticSearch英文基本查询

热门文章

  1. UsageStatsService之坑:一个XML解析异常导致的开机动画死循环
  2. LED阵列PCB灯板绘制
  3. 360安全浏览器极速模式对rem失效
  4. 正交变换法中的A矩阵怎么求
  5. 持续交付之三——持续集成
  6. 《软件方法》第8章 分析 之 分析类图(1)
  7. java生成随机邮箱_Java随机生成姓名、邮箱、手机号码
  8. [PTA]习题4-2 求幂级数展开的部分和
  9. Swiper图片垂直滑动
  10. 操作系统的概念、功能