%------Problema dei compleanni
%
% L' evento E e' la coincidenza di almeno due studenti che hanno lo stesso
% compleanno
% L' evento not E e' il complemento: nessuno studente compie gli anni nello
% stesso giorno

clear all; close all;

N      = 365;   % giorni dell'anno (non bisestile)

num    = 100;   % numero di studenti su cui si scommette

P_notE = [];    % inizializzazione del vettore della sequenza di probabilita' dell'evento complementare P(not E)

P_curr = 1;     % probabilita' certa di poter collocare l'eta' del primo studente 365/365 = N/N

P_notE = [P_notE P_curr]; % inserisce la probabilita' nel vettore

for i = 2:num
    %cicla su tutte gli studenti per calcolare P(not E) in funzione di i
    P_cond_Ai = (N-i+1) / N;        % probabilita' condizionata per lo studente i-esimo P(A_i | A_(i-1), A_(i-2)...)
    P_new     = P_cond_Ai*P_curr;   % probabilita' congiunta P(not E)  fino allo studente i-esimo
    P_notE    = [P_notE P_new];     % inserisce la probabilita' P(not E) nel vettore
    P_curr    = P_new;              % salva per la prossima iterazione
end

P_E = 1 - P_notE; %calcola la probabilita' dell'evento complementare
n   = 1:num;      %asse x del grafico

figure(1)

% plotto P(not E) in funzione di n
subplot(2,1,1)
plot(n, P_notE);
xlabel('Numero studenti')
title('P(not E)')

% plotto P(E) in funzione di n
subplot(2,1,2)
plot(n, P_E);
xlabel('Numero studenti')
title('P(E) = 1 - P(not E)')


