sábado, 25 de agosto de 2012

Probabilidade - Paradoxo do aniversário



O paradoxo do aniversário é um resultado surpreendente na teoria das probabilidades. Este paradoxo garante que dado um grupo de 23 pessoas (ou mais) pessoas escolhidas aleatoriamente, a chance de que duas pessoas terão a mesma data de aniversário é de mais de 50%.  Em uma festa com 30 pessoas, a probabilidade de haver duas pessoas com o mesmo aniversário é maior que 70%. Vamos calcular estes valores!

Primeiramente, vamos calcular a número de pessoas de um grupo para que duas pessoas tenham a mesma data de aniversário com probabilidade acima de q.

Para isso, calcularemos a probabilidade de todas pessoas tenham data de aniversário diferente. Note que o evento de duas pessoas tenham a mesma da aniversário e todas as pessoas tenham data de aniversário diferente são complementares.

p(duas pessoas com o mesmo aniversario) =  1 - p(todas pessoas com aniversários diferente)

A probabilidade de duas pessoas terem aniversários diferentes é

$p = (\frac{365}{365})( \frac{364}{365}) = 0,997$

A probabilidade de três pesoas terem aniversários diferentes é:

$p = (\frac{365}{365}) (\frac{364}{365}) (\frac{363}{365})= 0,991$

A probabilidade de n pessoas terem aniversários diferentes é:
$p = (\frac{365}{365}) (\frac{365-1}{365}) (\frac{363-2}{365}) \ldots (\frac{365-(n-1)}{365})$


Para descobrir  número de pessoas de um grupo para que duas pessoas tenham a mesma data de aniversário com probabilidade acima de q. Basta calcular iterativamente p até que q < (1-p), ou seja, até a probabilidade do complemento de p supere  o nosso limite estabelecido.

$n(d,q) = $ número de pessoas em um grupo para que tenha duas pessoas com a mesma data de aniversário com probabilidade q considerando o ano com d dias.

int n(int d, double q){
 double p = 1.0;
 int    s = 1;
 while( q > (1.0-p) ){
  p = p*( (double)(d-s)/d);
  s++;
 }
 return s;
}

Podemos construir a seguinte tabela:


p
n(365,p)
10
10
20
14
30
17
40
20
50
23
60
27
70
30
80
35
90
41
100
167

Observe que o algoritmo mostra que em um grupo com 167 pessoas, duas pessoas terão a mesma data aniversário com probabilidade de 100%. Para que desse o resultado de 365 seria necessário um variável double com uma grande precisão.

A operação contrária é mais fácil:

$p(n,d)$ = probabilidade de duas pessoas terem o mesmo aniversário dado um grupo de n pessoas considerandoo ano com d dias.
double p(int n, int d){
 double r = 1.0;
 int    s = 1;
 while(s<n){
  r = r*( (double)(d-s)/d);
  s++;
 }
 return 1.0 - r;
}

Imagine que você monte uma playlist com 500 músicas, qual é a probabilidade de que você escute 100 músicas e ocorra uma música repetida?

p(100,500) = 0.9999758457
 
Imagine que você monte uma playlist com 500 músicas, quantas músicas você precisa escutar para que você escute uma música repetida com probabilidade de 50%?

 n(500,0.5) = 27



 







 

Um comentário:

Unknown disse...

E o codigo completo?