# rndHyperGeo#

## Purpose#

Computes the random numbers for the hypergeometric distribution

## Format#

x = rndHyperGeo(r, c, m, k, n)#
{ x, newstate } = rndHyperGeo(r, c, m, k, n, state)
Parameters:
• r (scalar) – row dimension of the return matrix x

• c (scalar) – column dimension of the return matrix x

• m (matrix) – The size of the population from which draws will be made. ExE conformable with the row and column dimensions of the return matrix, r and c

• k (matrix) – The number of items in the population which possess a specified trait. ExE conformable with row and column dimensions of the return matrix, r, and c

• n (matrix) – The number of items drawn from the population. ExE conformable with the dimensions of the return matrix, r and c

• state (scalar or opaque vector) –

Optional argument.

scalar case

state = starting seed value only. If -1, GAUSS computes the starting seed based on the system clock.

opaque vector case

state = the state vector returned from a previous call to one of the `rnd` random number functions.

Returns:
• x (NxK matrix, Nx1 vector or scalar) – The probability of drawing x items which possess a specified trait.

• new_state (Opaque vector) – the updated state

## Examples#

### Basic Example#

```// Population size
m = 100;

// Number of marked items
k = 25;

// Number of items drawn
n = 40;

// Compute 1 random number
x = rndHyperGeo(1, 1, m, k, n);
```

### Random matrix in which each column has different parameters.#

```// Population size
m = 100;

// Number of marked items
k = 25;

// 1x2 row vector, number of items drawn
n = { 40 50 };

// Compute a 10 x 2 matrix of random number
x = rndHyperGeo(10, 2, m, k, n);
```

Both columns of the variable x created in the code above use the same values for m and k. However, the first column of x will be calculated using the first element of n, 40. The second column of x will be calculated using the second element of n, 50.

### Passing in a state vector#

```// Starting seed value
seed = 23424;

// Population size
m = 100;

// Number of marked items
k = 25;

// Number of items drawn
n = 40;

// Compute 1000x1 vector of random numbers
{ x, state } = rndHyperGeo(1000, 1, m, k, n, seed);
```