生日悖論指如果乙個房間裡有23 或以上人,那麼至少有兩個人生日相同的 概率大於50%。編寫程式,輸出在不同隨機樣本數量下,23 個人中至少兩個人生日相同的概率。
from random import randint
def list_birth():
list_birth=
for i in range(23):
x=randint(1,12)
if x in [1,3,5,7,8,10,12]:
y=randint(1,31)
elif x==2:
y=randint(1,28)
else:
y=randint(1,30)
return list_birth
#建立生日日期對的列表,這裡也可以用365天來算
def set_birth():
set_birth=set(list_birth())
return set_birth
#轉換成集合是為了去重,若集合長度小於23,則說明,有生日一樣的日期被去掉了
def main(count):
n=0for i in range(count):
list_birth()
set_birth()
if len(set_birth())<23:n=n+1
chance=n/count #計算去重的次數佔總迴圈次數的比例,即概率
print("".format(chance))
main(10000)
python 生日悖論概率計算。
生日悖論指如果乙個房間裡有23 或以上人,那麼至少有兩個人生日相同的 概率大於50 編寫程式,輸出在不同隨機樣本數量下,23 個人中至少兩個人生日相同的概率。from random import randint def list birth list birth for i in range 23 ...
python中生日悖論分析 從生日悖論談雜湊碰撞
1 前言 前幾天和乙個大佬交流了幾個問題,其中乙個關於id生成的問題推展到了雜湊衝突和乙個與之相關的乙個數學趣題生日悖論。雜湊的對映壓縮和衝突 生日悖論 crc32的衝突分析 2.雜湊對映壓縮和衝突 雜湊的本質就是數學,簡單來說雜湊函式實現了各種長度和形式的輸入經過公開的雜湊函式的運算生成乙個固定長...
驗證生日悖論的python實現
import random,time n eval input 請問你想實驗幾次呀 count 0 start time.perf counter for i in range n 列表推導式 隨機抽取從 1,366 抽取23次,組成列表 bds random.randint 1,366 for x...