%% Random Number Generator
%help rng
%Generated numbers are pseudo-random. They are produced by an algorithm. If
%the algoritm is seeded the same way, the same numbers will be produced:
rng(0)
rand(3,1)
rng(0)
rand(3,1)
%This can be use to generate the same set of 'random' numbers each time.
% See 'doc rng' for algorithm options.
%% The Inversion Method
web('https://en.wikipedia.org/wiki/Inverse_transform_sampling')
%An example for the exponential distribution:
% PDF: lambda*exp(-lambda*x)
% CDF: 1-exp(-lambda*x)
N=1000;
lambda=1;
%This is the inverse of the CDF.
Data=-log(1-rand(N,1))/lambda;
figure
hist(Data,20)
xlabel('X')
ylabel('Counts')
%Note the data looks to be correctly distributed.
%The mean of the PDF should be lambda. Check:
fprintf('Mean should be %g. Mean of Data is %g \n',lambda,mean(Data))
%The variance of the PDF should be lambda^-2. Check:
fprintf('Variance should be %g. Variance of Data is %g \n',lambda^2,var(Data))
%We also briefly talked about rejection sampling:
web('https://en.wikipedia.org/wiki/Rejection_sampling')
%% The Poisson Distribution
%We get Poisson distribution when we are counting the number of events that
% occur in a fixed time period from a constant-rate process. This is also
% called a 'Poisson' process.
web('https://en.wikipedia.org/wiki/Poisson_distribution')
TSteps=1000; %Time steps
P=.020; %Probability of an event during time interval
NTrials=10000;
%Vary P from small to large to change expected value from ~ 1 to > 10
%Expected, or mean number of events over repeated trials
Expected=P*TSteps
%This is the events per time step
%Look carefully at what this does. '1' is an event.
Events=double(rand(TSteps,NTrials)