Code covered by the BSD License  

Highlights from
randp.m

image thumbnail
from randp.m by Matthew Roughan
Generate Pareto random variables.

randp(N,M,alpha,b)
function x = randp(N,M,alpha,b)
% randp generates Pareto random variables.
%
% created: 	Fri Aug  8 1997, (c) Matthew Roughan
% author:  	Matthew Roughan 
% email:   	matthew.roughan@adelaide.edu.au
%
% This function generates Pareto random variables (of type I)
%    see "Statistical Distributions", Evans, Hastings and Peacock, Wiley, 1993
%    or  http://www.maths.adelaide.edu.au/matthew.roughan/probability_distrns/node6.html
%    or  http://en.wikipedia.org/wiki/Pareto_distribution
%
% The Pareto distribution is a classic "heavy-tailed" or "power-law" distribution.
% It has distribution function
%    F(x) = 1 - (b/x)^alpha, for x>=b
% and density
%    f(x) = (alpha/b) * (b/x)^(alpha+1), for x>=b
%
% Its mean is
%    E[X] = b * alpha/(alpha-1), for alpha>1
% but note that the mean is infinite for alpha<=1
%
% Its variance is 
%    Var(X) = b^2 * alpha/[(alpha-1)^2*(alpha-2)], for alpha>1
% but note that the variance is infinite for alpha<=2
%
% Median
%    Med(X) = b * 2^(1/alpha)
%
% INPUTS:
%    (N,M)     size of output matrix of random variables
%    alpha>0   shape parameter of Pareto distribution
%    b>0       location (sometimes called scale) parameter of Pareto distribution
% 
% OUTPUTS
%    x         an (N,M) array of random Pareto distributed numbers
%                 range of x = [b, inf)
% 
% Note the function calls "rand" so if you want to control the seed, use rand('state', seed).
%
% Note that the type II Pareto is just shifted so that x>=0, so to obtain this distribution
% just take
%             x = randp(N,M,alpha,b) - b;
%

if (alpha <= 0)
  error('alpha must be > 0')
end
if (b <= 0)
  error('b must be > 0')
end
if (N<1 | ceil(N) ~= N)
  error('N must be a positive integer')
end
if (M<1 | ceil(M) ~= M)
  error('M must be a positive integer')
end

y = rand(N,M);
x = b*(1-y).^(-1/alpha);

Contact us at files@mathworks.com