%% Temple university CIS 2033
% A modern Introduction to Probability and Statistics
% Chapter 3 - Conditional probability and independence
%
% Author: Djordje Gligorijevic
% email: gligorijevic@temple.edu
%% The probability of no coincident birthdays
%
% If there are n people in a classroom, what is the probability that
% there is no coincident birthday.
%
% General solution:
%
% P = (1-(n-1)/365)*(1-(n-2)/365)*...*(1-(1)/365)
clc;
clear all
eventBn1 = 'the birthday of the nth person does not coincide with a birthday of any of the ?rst n ? 1 persons'
studentsCount = 100; % maximum number of people in classroom
xAxis = 1:studentsCount;
prevPnot = 1; % initialize probability
for i = studentsCount:-1:1
Pnot = prevPnot*(1 - (studentsCount - i)/365); % probability that no birthdays are the same
P(i) = Pnot;
prevPnot = Pnot;
end
% because we are counting probabilities in reverse order than count of
% people in a classroom we flip the vector of probabilties using fliplr()
% function
figure
plot(xAxis, fliplr(P), '.-')
title(sprintf('The probability P(Bn) of no coincident birthdays for n = 1,...,%i',studentsCount))
xlabel('Number of people')
ylabel('P(B)')
grid on
hold on
%% The probability to have two coindident birthdays
%
% If there are n people in a classroom, what is the probability that
% at least two of them have the same birthday?
%
% General solution:
% P = 1-365!/(365-n)!/365^n
%
% If you try to solve this with large n (e.g. 30, for which the solution is
% 29%) with the factorial function like so:
%
% P = 1-factorial(365)/factorial(365-30)/365^30,
%
% Matlab will output NaN because Matlab tries to compute very large values here.
%
% The approach below is to start from n=1 and at each step use the
% previous step's result to avoid dealing with large numbers.
%
% Samil Korkmaz, 31.01.2012
clc;
clearvars -except eventBn1
eventBn2 = 'There are at least two coincident birthdays amonth first n people';
studentsCount = 100; % maximum number of people in classroom
xAxis = 1:studentsCount;
prevPnot = 1; % initialize probability
for i = 1:studentsCount
Pnot = prevPnot*(365-i+1)/365; % probability that no birthdays are the same
P(i) = 1-Pnot; % probability that at least two birthdays are the same
prevPnot = Pnot;
end
plot(xAxis, P, '.-')
title(sprintf('The probability P(Bn) of at least two coincident birthdays for n = 1,...,%i', studentsCount))
xlabel('Number of people')
ylabel('P(Bn)')
grid on
legend(eventBn1, eventBn2)