生日悖论指如果一个房间里有23人或以上,那么至少有两个人生日相同的概率大于50%。
在闰年的情况下每年有366天,每天的日期都不同,因此可以用1-366数字替代:

x = random.randint(1, 366)

根据自己设定的房间人数将所有随机生成的生日(即数字)添加到同一个列表内:

        y = []for i in range(n):x = random.randint(1, 366)y.append(x)

判断在随机生成的生日内有无重复生日,第一想法是进行比较,逐个对比,但是这样会出现一个bug,当同一个列表内有多个相同元素时,会出现统计次数增加的情况。这时候,一个神奇的函数set()出现了;
经过set()函数的变形之后,如果长度变化了,很明显说明随机生成的生日有重复的日期,随机生成的生日有重复的记为1,

        if len(y)!=len(set(y)):print(1)

这样单次实验就OK了,剩下的就是将这个实验重复进行多次,很简单一个for循环搞定,然后再对有重复生日的次数进行统计,根据实验的次数进行概率计算。

最后,附上完整代码:

import randomdef fun(n):count = 0for i in range(100):y = []for i in range(n):x = random.randint(1, 366)y.append(x)print("{0}...{1}".format(y,len(y)))if len(y)!=len(set(y)):count+=1print(count)print(count/100)
n=int(input("请输入房间人数:"))
fun(n)

以及部分结果截图:

请输入房间人数:23
[72, 95, 344, 198, 7, 96, 88, 64, 151, 188, 158, 321, 35, 362, 169, 91, 175, 302, 78, 1, 340, 198, 180]...23
1
[192, 149, 68, 299, 68, 328, 201, 214, 326, 360, 366, 344, 281, 314, 187, 275, 318, 181, 52, 183, 265, 153, 359]...23
2
[121, 191, 284, 31, 17, 102, 341, 83, 224, 141, 145, 53, 284, 102, 351, 78, 266, 225, 167, 39, 316, 73, 277]...23
3
[155, 58, 157, 108, 10, 75, 205, 40, 302, 239, 16, 119, 249, 160, 192, 352, 217, 290, 251, 83, 161, 140, 33]...23
[85, 102, 312, 30, 141, 95, 90, 17, 122, 202, 34, 22, 268, 107, 350, 227, 26, 170, 116, 228, 302, 264, 67]...23
[342, 276, 275, 166, 143, 117, 98, 329, 302, 74, 363, 62, 161, 166, 22, 340, 207, 237, 143, 45, 279, 173, 313]...23
4
...............................
[23, 80, 180, 218, 39, 166, 38, 106, 247, 305, 235, 40, 41, 239, 190, 176, 306, 264, 150, 27, 217, 138, 317]...23
[241, 209, 219, 195, 164, 262, 343, 278, 144, 26, 209, 268, 153, 5, 70, 89, 27, 37, 355, 86, 66, 232, 76]...23
48
[61, 353, 104, 152, 278, 259, 134, 315, 216, 89, 39, 313, 324, 35, 59, 218, 49, 149, 216, 139, 305, 337, 312]...23
49
[238, 182, 104, 6, 94, 4, 31, 201, 326, 266, 257, 46, 342, 164, 43, 249, 143, 105, 52, 76, 108, 280, 313]...23
[192, 4, 200, 212, 95, 325, 164, 5, 309, 360, 5, 245, 150, 328, 20, 329, 235, 96, 226, 336, 148, 211, 307]...23
50
0.5

哈哈,这次试验刚好概率五五开。

python随机生成生日测试生日悖论相关推荐

  1. 怎样用python随机生成100内的100个奇数_python怎么随机生成奇数_后端开发

    PHP每15分钟自动更新网站地图(减少服务器消耗)_后端开发 sitemap.php为页面文件,sitemap.html为sitemap.php的克隆版,监控宝设置定时监控timeSitemap.ph ...

  2. python随机生成验证码_Python生成随机验证码的两种方法

    # -*- coding: utf-8 -*- import random def generate_verification_code_v2(): ''' 随机生成6位的验证码 ''' code_l ...

  3. 【小知识点】Python随机生成 Phone 号码,测试用~

    Python 随机生成 Phone 号码 随机手机号码 Python 生成一亿个手机号 用 time 模块生成 随机手机号码 在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充 ...

  4. python随机生成奇数_python怎么随机生成奇数_后端开发

    PHP每15分钟自动更新网站地图(减少服务器消耗)_后端开发 sitemap.php为页面文件,sitemap.html为sitemap.php的克隆版,监控宝设置定时监控timeSitemap.ph ...

  5. python随机生成数据库数据之一步一步教你数据造假成为道德主席-取名器-.-xswl-pydbgen || Faker

    简介 自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端.....不能重复的叫什么科学,丢人 开始 原理 基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形.浮点型数据,借助数组思 ...

  6. python 随机生成密码

    python 随机生成密码 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : 随机生成密码 ...

  7. python随机生成30个8_Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例...

    上代码: 环境:Python3 import random,string s=string.ascii_letters+string.digits print(s) n={''.join(random ...

  8. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略

    Python语言学习:利用Python随机生成那些事之随机生成使用方法.案例应用之详细攻略 目录 案例应用 1.随机生成指定区间内的某一值 案例应用 1.随机生成指定区间内的某一值 使用说明:给定区域 ...

  9. 利用python随机生成姓名的实例教程

    本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...

  10. 使用python随机生成IP+域名并写入excel表

    题目要求:使用python随机生成IP,随机域名:并创建excel表,将生成的随机IP与域名数据写入: 代码如下: import random import socket import struct ...

最新文章

  1. 使用码云给同事地址地址注意事项
  2. 使用IIS组建PHP服务器
  3. Smali源代码分析教程(转)
  4. dashujufenxi:全球企业将遭受20万亿美元损失 年底杠杆率升至90年代水平
  5. 漂亮的花样边框html代码,手把手教你制作精美边框素材HTML代码
  6. C# Timer定时器用法
  7. leetcode 26. 删除有序数组中的重复项
  8. 如何生成静态页面的五种方案
  9. pve网卡直通虚拟机pve失联打不开解决方案,不用重新安装pve
  10. 南阳oj-----Registration system(map)
  11. python中出现nameerror_python类中出现NameError的问题
  12. iOS--地图找房(类似链家、安居客等地图找房)
  13. jieba分词怎么操作_如何运用jieba库分词
  14. 阿辉DirectX 11学习笔记一
  15. webpack 处理网页小图标favicon
  16. spring boot项目使用ojdbc8连接oracle 12c(12.2.0.1.0),解决启动极慢问题!
  17. 有关微服务Zuul网关面试题分享【持续更新中】
  18. ADXL345测量角度
  19. IMP-00017: following statement failed with ORACLE error 20005:(表统计信息被锁)
  20. 经纬度和坐标之间怎么相互转换

热门文章

  1. Nvidia GPU信息nvidia-smi(Persistence-M持久性内存、Volatile Uncorr. ECC显存错误校正、GPU-Util显卡利用率、Compute M.显卡计算模式)
  2. 西游记中神兽谛听的能力 这款小程序也有
  3. 认知的高度 = 人生的高度
  4. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试
  5. ##MyfifthLog
  6. 互联网晚报 | 8月16日 星期一 | 李宁上半年营收破百亿;微博视频打赏功能测试上线;我国银行理财产品投资者数量超6000万...
  7. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
  8. 无Internet,安全的解决方法
  9. golang数据结构初探之动态数组slice
  10. ruyistdio IDE caffemodel 转.wk