Hypergeometric Distribution - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English

Generates a vector of random variates from 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)

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 Generate N variates from the Hypergeometric distribution
    CALL DRANDHYPERGEOMETRIC(N,NP,NS,M,STATE,X,INFO)

C Print the results
    WRITE(6,*) (X(I),I=1,N)