hide long namesshow long names
hide short namesshow short names
Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

NAG Toolbox: nag_rand_dist_dirichlet (g05se)


    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example


nag_rand_dist_dirichlet (g05se) generates a vector of pseudorandom numbers taken from a Dirichlet distribution.


[state, x, ifail] = g05se(n, a, state, 'm', m)
[state, x, ifail] = nag_rand_dist_dirichlet(n, a, state, 'm', m)


The distribution has PDF (probability density function)
fx = 1 Bα i=1 m x i αi - 1 and Bα = i=1 m Γ αi Γ i=1 m αi  
where x = x1,x2,,xm  is a vector of dimension m, such that xi>0 for all i and i=1 m xi=1.
nag_rand_dist_dirichlet (g05se) generates a draw from a Dirichlet distribution by first drawing m independent samples, yigammaαi,1, i.e., independent draws from a gamma distribution with parameters αi>0 and one, and then setting xi=yi/ j=1 m yj.
One of the initialization functions nag_rand_init_repeat (g05kf) (for a repeatable sequence if computed sequentially) or nag_rand_init_nonrepeat (g05kg) (for a non-repeatable sequence) must be called prior to the first call to nag_rand_dist_dirichlet (g05se).


Dagpunar J (1988) Principles of Random Variate Generation Oxford University Press
Hastings N A J and Peacock J B (1975) Statistical Distributions Butterworth


Compulsory Input Parameters

1:     n int64int32nag_int scalar
n, the number of pseudorandom numbers to be generated.
Constraint: n0.
2:     am – double array
The parameter vector for the distribution.
Constraint: ai>0.0, for i=1,2,,m.
3:     state: int64int32nag_int array
Note: the actual argument supplied must be the array state supplied to the initialization routines nag_rand_init_repeat (g05kf) or nag_rand_init_nonrepeat (g05kg).
Contains information on the selected base generator and its current state.

Optional Input Parameters

1:     m int64int32nag_int scalar
Default: the dimension of the array a.
m, the number of dimensions of the distribution.
Constraint: m>0.

Output Parameters

1:     state: int64int32nag_int array
Contains updated information on the state of the generator.
2:     xldxm – double array
The n pseudorandom numbers from the specified Dirichlet distribution, with xij holding the jth dimension for the ith variate.
3:     ifail int64int32nag_int scalar
ifail=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

Errors or warnings detected by the function:
Constraint: n0.
Constraint: m > 0.
On entry, at least one ai0.
On entry, state vector has been corrupted or not initialized.
Constraint: ldxn.
An unexpected error has been triggered by this routine. Please contact NAG.
Your licence key may have expired or may not have been installed correctly.
Dynamic memory allocation failed.


Not applicable.

Further Comments



This example prints a set of five pseudorandom numbers from a Dirichlet distribution with parameters m=4 and α=2.0,2.0,2.0,2.0, generated by a single call to nag_rand_dist_dirichlet (g05se), after initialization by nag_rand_init_repeat (g05kf).
function g05se_example

fprintf('g05se example results\n\n');

% Initialize the base generator to a repeatable sequence
seed  = [int64(1762543)];
genid = int64(1);
subid = int64(1);
[state, ifail] = g05kf( ...
                        genid, subid, seed);

% Number of variates
n = int64(5);
% Parameters
a = [2; 2; 2; 2];

% Generate variates from Dirichlet distribution
[state, x, ifail] = g05se( ...
                           n, a, state);


g05se example results

    0.3600    0.3138    0.0837    0.2426
    0.2874    0.5121    0.1497    0.0509
    0.2286    0.2190    0.3959    0.1566
    0.1744    0.3961    0.2764    0.1530
    0.1522    0.2845    0.2074    0.3559

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015