Code covered by the BSD License  

Highlights from
Generation of Random Variates

image thumbnail

Generation of Random Variates

by

 

generates random variates from over 870 univariate distributions

tdiff_cdf(x, nu)
% tdiff_cdf.m - evaluates a T-Difference Cumulative Distribution.
%   See "Continuous Univariate Distributions", Vol.2, Johnson, Kotz, 
%   & Balakrishnan, J. Wiley, 1995, p.411.
%
%   Vector Form of CDF!!!
%
%  Created by Jim Huntley,  01/06/10
%

function [cdf] = tdiff_cdf(x, nu)

%persistent coef ymin ny imax tol trace

%Initializations.
%if(isempty(coef))
    coef = 2 * exp(gammaln(0.5*(nu+1)) - nu*log(2) - 0.5*log(pi) - 2*gammaln(0.5*nu));
    ymin = 1e-6;
    ny = 1000;
    imax = 100;
    tol = 1e-8;
    trace = [];
    warning off MATLAB:quad:MinStepSize;
%end

for jx = 1:size(x,2)
    ymax = 0.25 * (x(jx))^2 / nu;
    dy = (ymax-ymin) / (ny-1);
    y = ymin:dy:ymax;
    sum1 = 0;
    for ii = 0:imax
        term1 = exp(gammaln(ii+0.5) + gammaln(nu+ii+0.5) - ...
                    gammaln(ii+1) - gammaln(0.5*nu+ii+1));            
        int1 = quad(@kernfn,ymin,ymax,tol,trace,nu,ii);
        sum1 = sum1 + term1 * int1;
    end
cdf(jx) = coef * sum1;
end

return

function [kern] = kernfn(y, nu, ii)

kern = y.^(ii-0.5) ./ (1+y).^(0.5+nu+ii);

return




    

Contact us