<< Chapter < Page | Chapter >> Page > |
multinom.m Multinomial distribution (small $N,m$ ).
% MULTINOM file multinom.m Multinomial distribution
% Version of 8/24/96% Multinomial distribution (small N, m)
N = input('Enter the number of trials ');m = input('Enter the number of types ');
p = input('Enter the type probabilities ');M = 1:m;
T = zeros(m^N,N);for i = 1:N
a = rowcopy(M,m^(i-1));a = a(:);
a = colcopy(a,m^(N-i));T(:,N-i+1) = a(:); % All possible strings of the types
endMT = zeros(m^N,m);
for i = 1:mMT(:,i) = sum(T'==i)';
endclear T % To conserve memory
disp('String frequencies for type k are in column matrix MT(:,k)')P = zeros(m^N,N);
for i = 1:Na = rowcopy(p,m^(i-1));
a = a(:);a = colcopy(a,m^(N-i));
P(:,N-i+1) = a(:); % Strings of type probabilitiesend
PS = prod(P'); % Probability of each stringclear P % To conserve memory
disp('String probabilities are in row matrix PS')
Cardmatch.m Sampling to estimate the probability of one or more matches when one card is drawn from each of $nd$ identical decks of c cards. The number $ns$ of samples is specified.
% CARDMATCH file cardmatch.m Prob of matches in cards from identical decks
% Version of 6/27/97% Estimates the probability of one or more matches
% in drawing cards from nd decks of c cards each% Produces a supersample of size n = nd*ns, where
% ns is the number of samples% Each sample is sorted, and then tested for differences
% between adjacent elements. Matches are indicated by% zero differences between adjacent elements in sorted sample
c = input('Enter the number c of cards in a deck ');nd = input('Enter the number nd of decks ');
ns = input('Enter the number ns of sample runs ');X = 1:c; % Population values
PX = (1/c)*ones(1,c); % Population probabilitiesN = nd*ns; % Length of supersample
U = rand(1,N); % Matrix of n random numbersT = dquant(X,PX,U); % Supersample obtained with quantile function;
% the function dquant determines quantile% function values of random number sequence U
ex = sum(T)/N; % Sample averageEX = dot(X,PX); % Population mean
vx = sum(T.^2)/N - ex^2; % Sample varianceVX = dot(X.^2,PX) - EX^2; % Population variance
A = reshape(T,nd,ns); % Chops supersample into ns samples of size ndDS = diff(sort(A)); % Sorts each sample
m = sum(DS==0)>0; % Differences between elements in each sample
% Zero difference iff there is a matchpm = sum(m)/ns; % Fraction of samples with one or more matches
Pm = 1 - comb(c,nd)*gamma(nd + 1)/c^(nd); % Theoretical probability of matchdisp('The sample is in column vector T') % Displays of results
disp(['Sample average ex = ', num2str(ex),])
disp(['Population mean E(X) = ',num2str(EX),])
disp(['Sample variance vx = ',num2str(vx),])
disp(['Population variance V(X) = ',num2str(VX),])
disp(['Fraction of samples with one or more matches pm = ', num2str(pm),])
disp(['Probability of one or more matches in a sample Pm = ', num2str(Pm),])
Notification Switch
Would you like to follow the 'Applied probability' conversation and receive update notifications?