python 生日悖论概率计算。

生日悖论指如果一个房间里有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)
        list_birth.append((x,y))
    return list_birth
#建立生日日期对的列表,这里也可以用365天来算

def set_birth():
    set_birth=set(list_birth()) 
    return set_birth
#转换成集合是为了去重,若集合长度小于23,则说明,有生日一样的日期被去掉了

def main(count):
    n=0
    for i in range(count):
        list_birth()
        set_birth()
        if len(set_birth())<23:n=n+1
    chance=n/count #计算去重的次数占总循环次数的比例,即概率
    print("{:.2%}".format(chance))

main(10000)


你可能感兴趣的:(python问题)