Paradoxo do aniversário. 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%. Implemente um programa que mostra esta teoria. Podem ser utilizados os métodos embutidos nas classes list e set.

Passo 1

Beleza, vamos resolver esse exercício que fala sobre o Paradoxo do Aniversário na Teoria das Probabilidades. A ideia é criar um programa que mostra que, em um grupo de 23 pessoas, a chance de pelo menos duas terem o mesmo aniversário é maior que 50%. Para isso, vamos usar as classes list e set no nosso código.

Passo 2

Primeiro, precisamos entender o que é o Paradoxo do Aniversário. Apesar do nome, não é realmente um paradoxo, mas sim uma situação contra-intuitiva. A matemática nos mostra que em um grupo de 23 pessoas, há mais de 50% de chance de que pelo menos duas compartilhem o mesmo dia de aniversário.

Passo 3

Para simular isso, vamos pensar em como representar os aniversários. Podemos assumir que há 365 dias no ano (ignorando anos bissextos para simplificar). Cada pessoa no grupo vai ter um número de 1 a 365 representando seu aniversário.

Passo 4

Agora, vamos usar uma list para armazenar os aniversários das pessoas no grupo. A gente vai simular que cada pessoa escolhe um aniversário aleatoriamente.

Passo 5

Depois de gerar a lista de aniversários, queremos verificar se há duplicatas. Para isso, usamos um set, que elimina qualquer repetição. Se o tamanho do set for menor que o da list, significa que tem pelo menos dois aniversários iguais.

Passo 6

Para tornar a simulação mais precisa, vamos repetir esse processo várias vezes (por exemplo, 10.000 vezes) e contar quantas vezes conseguimos pelo menos dois aniversários iguais. Assim, podemos calcular a porcentagem de vezes que isso acontece, aproximando a probabilidade real.

Passo 7

Vamos implementar isso em Python. Usaremos as bibliotecas random para gerar aniversários aleatórios e set para verificar duplicatas. A gente define uma função que simula um experimento e depois calcula a probabilidade baseada nas repetições.

Passo 8

Aqui está o código completo que realiza essa simulação:
import random

def simular_paradoxo_aniversario(grupo, tentativas):
    sucesso = 0
    for _ in range(tentativas):
        aniversarios = [random.randint(1, 365) for _ in range(grupo)]
        if len(aniversarios) != len(set(aniversarios)):
            sucesso += 1
    probabilidade = (sucesso / tentativas) * 100
    return probabilidade

# Parâmetros
tamanho_grupo = 23
numero_tentativas = 10000

# Execução da simulação
resultado = simular_paradoxo_aniversario(tamanho_grupo, numero_tentativas)
print(f'A probabilidade de pelo menos dois aniversários iguais em um grupo de {tamanho_grupo} pessoas é de aproximadamente {resultado:.2f}%')

Resposta

Rodando esse código, você vai obter um resultado próximo a 50,7%, o que confirma o Paradoxo do Aniversário: em um grupo de 23 pessoas, há mais de 50% de chance de que pelo menos duas compartilhem o mesmo aniversário.

Exercícios relacionados

Torres de Hanoi. Implemente a função hanoi(num), onde num é a quantidade de blocos do problema da torre de hanoi. A sua função deve dizer qual o movimento realizado e quantos blocos tem em cada torre após cada movimento.
Implemente a função area_triangulo(matriz). O parâmetro matriz é uma matriz que contém as coordenadas e y dos pontos do triângulo ( e ). Utilize o módulo do produto vetorial para calcular a área do triângulo.
Onde é definido por e é definido por . Isto resultará no seguinte determinante:
Após o cálculo do determinante, obtenha seu módulo (valor necessariamente positivo) e divida por 2 (compare a complexidade com o exercício anterior).
Uma certa firma fez uma pesquisa para saber se as pessoas gostaram ou não de um novo produto lançado no mercado. Para isso, forneceu o sexo do entrevistado e sua resposta (sim ou não). Sabendo-se que foram entrevistadas 2.000 pessoas, crie um algoritmo que calcule e escreva:
a) o número de pessoas que responderam sim;
b) o número de pessoas que responderam não;a porcentagem de pessoas do sexo masculino que responderam não.
Crie um algoritmo que leia um número N e calcule: