Matlab生成zipf随机数
Matlab生成zipf随机数
`
function [pattern, distribution] = zipf1(alpha,Q)
%pi =H(α)/iα , where α is the Zipf exponent and H(α) is the
%normalization factor
pattern = [];
sum = 0;
distribution = [];
pf = [];
for i=1:Q
pi=1/(i^alpha);
sum = sum+pi;
end
pf = [pf 1/sum];
distribution = [1/sum];
for i=2:Q
pf = [pf pf(i-1) + 1/(i^alpha)/sum];
distribution = [distribution 1/(i^alpha)/sum];
end
for i=1:10 %Generate ten random numbers
temp = unifrnd(0,1);
index = 1;
while(temp > pf(index))
index = index+1;
end
pattern = [pattern index];
end
end
`