作者achicn3 (Sher)
看板C_and_CPP
标题[问题] 生日悖论
时间Mon Mar 27 00:14:22 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Dev c
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
No
问题(Question):
新手发问
程式主要是算生日悖论发生的机率
并且要用经验法则去验证 5000次中 n个人至少有2人是同天的机率
主要问题点就是我该怎麽去验证阵列days[j]内是否有相同的数字?!也就是如何验证同天
生日
像是说如果只是2个人那if(days[j]==days[j+1)就可以了
但当延伸到2个人以上时就不够用了
因为可能会发生days[0]==days[2] ,days[1]==days[3], days[32]==days[48] .... etc(
也就是说可能是第2人跟第48人同天生日或第3人跟 第5人同天 等)
有喂狗可是好像没找到解决方法
请问各位大大该怎麽解决呢
喂入的资料(Input):
预期的正确结果(Expected Output):
这是直接用机率计算的 程式结果大略相等即可
http://i.imgur.com/S4F5Nsa.jpg
错误结果(Wrong Output):
http://i.imgur.com/D98sdDA.jpg
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/1Wy0YkW8
http://i.imgur.com/mjFTOjG.jpg
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.237.13
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1490544864.A.DDD.html
※ 编辑: achicn3 (180.217.237.13), 03/27/2017 00:27:56
1F:→ achicn3: 我刚刚想到了用stack储存生日 之後在往前搜寻有无同天生 03/27 00:29
2F:→ achicn3: 日 有的话次数就加一 感觉上是可以的 晚点试试看 有其他 03/27 00:29
3F:→ achicn3: 更好的方法吗 03/27 00:29
4F:→ Schottky: 生日只有 366 个,统计每天生日的各有几人就知道了 03/27 00:39
5F:→ Schottky: 这方法叫 distribution counting 03/27 00:39
6F:→ achicn3: 感谢s大 有想法了应该做的出来!!! 03/27 01:43