Initializes a reference vector for use with DRANDGENERALDISCRETE. Reference vector is for a Hypergeometric distribution with probability, \(f (X)\), defined by:
\[f(X) = \frac{s! \, m! \, (p-s)! \, (p-m)!}
{X! \, (s-X)! \, (m-X)! \, (p-m-s+X)! \, p!}\]
if X = max(0, m + s – p),…, min(l, m), otherwise f (X) = 0. Here p is the size of the population, (NP), s is the size of the sample taken from the population, (NS) and m is the number of labeled, or specified, items in the population, (M ).
C Generate 100 values from the Hypergeometric distribution
INTEGER LSTATE,N
PARAMETER (LSTATE=16,N=100)
INTEGER I,INFO,SEED(1),STATE(LSTATE)
INTEGER NP, NS,M
INTEGER X(N)
INTEGER LREF
DOUBLE PRECISION REF(1000)
C Set the seed
SEED(1) = 1234
C Read in the distributional parameters
READ(5,*) NP, NS,M
C Initialize the STATE vector
CALL DRANDINITIALIZE(1,1,SEED,1,STATE,LSTATE,INFO)
C Initialize the reference vector
LREF = 1000
CALL DRANDHYPERGEOMETRICREFERENCE(NP, NS,M,REF,LREF,INFO)
C Generate N variates from the Hypergeometric distribution
CALL DRANDGENERALDISCRETE(N,REF,STATE,X,INFO)
C Print the results
WRITE(6,*) (X(I),I=1,N)