<< Chapter < Page | Chapter >> Page > |
multinom.m Multinomial distribution (small ).
% 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 identical decks of c cards. The number 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?