Em teoria das probabilidades, o paradoxo do aniversário afirma que dado um grupo de 23 (ou mais) pessoas escolhidas aleatoriamente, a chance de que duas pessoas terão a mesma data de aniversário é de mais de 50%. Para 57 ou mais pessoas, a probabilidade é maior do que 99%, entretanto, ela não pode ser exatamente 100% exceto que se tenha pelo menos 367 pessoas.
Escreva um programa que recebe um número n de pessoas e um número x de repetições e sorteia listas com datas de aniversário, e verifica se existe alguma data coincidente. Para cada loop deve-se re-sortear as listas, e para cada lista onde há casos coincidentes deve-se acrescentar 1 ao número de casos favoráveis. Depois de rodados os x loops de a porcentegem de vezes em que houve aniversários coincidentes.
Detalhe: Use compressão de listas para gerar as datas de aniversário
Tentativa de solução:
import random
datas =[x for x in range(1,366)]
#print(datas)
n = int(input("Digite o número de pessoas: "))
x = int(input("Digite o número de repetições: "))
datas_sorteadas = []
favoraveis = 0
for i in range(x):
for i in range(n):
datas_sorteadas.append(random.choice(datas))
print(datas_sorteadas)
for data in datas_sorteadas:
if datas_sorteadas.count(data)>=2:
favoraveis +=1
datas_sorteadas = []
datas_sorteadas.append(random.choice(datas))
print(datas_sorteadas)
print("Casos Favoráveis: ", favoraveis)
print("n*x",n*x)
print("Percentual: ", (favoraveis/(n*x)))
#print(datas_sorteadas)
O programa está rodando sem erros mas desconfio que não está correto. Os resultados não condizem com a teoria. Alguma ideia de como corrigir?