4.3.用python解決經典問題:生日悖論, birthday paradox

1.問題描述及思路

生日悖論是指 在一羣人中, 出現兩个人(或多个人)的生日在同一天的概率遠比直覺判斷的大得多. 因此也可以解釋爲啥每个班都有人會在同一天過生的現象.

其實從數學上求解這个問題更簡單, n个人中出現同天生日的概率爲 1 - 365!/(365-n)!/(365**n), 但既然是編程解決, 就得用仿真的思路, 而不是代數思路.

要驗證這个情況, 可以用計算機隨機生成生日組合, 在多次(比如一百萬次)模擬後統計並計算概率.

以python來說, 引入隨機數模凷random即可:

首先指定人數, 然後生成相應人數的隨機生日組合列表, 再檢查生日列表中有無重復生日出現, 反復執行這个流程到指定的次數(比如一百萬次), 期間統計出現相同生日的次數, 就可計算出概率.



2.實現代碼

# 計算一羣人中出現相同生日的概率

import random

SIMULATION_TIMES = 1000000  # 模擬次數
people = max(2, int(input('請輸入人數: ')))  # 確保至少2人


def generate_bir(people):
    """生成指定人數的隨機生日列表"""
    birs = []
    for i in range(people):
        bir_mon = random.randint(1, 12)
        if bir_mon in [1, 3, 5, 7, 8, 10, 12]:
            bir_day = random.randint(1, 31)
        elif bir_mon == 2:
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值