# NegBinomial

Generates random numbers with negative binomial distribution.

## Syntax

Fortran:

status = virngnegbinomial( method, stream, n, r, a, p )

C:

status = viRngNegbinomial( method, stream, n, r, a, p );

## Description

This function generates random numbers with negative binomial distribution and distribution parameters a and p, where p, a∈R; 0 < p < 1; a > 0.

If the first distribution parameter a∈N, this distribution is the same as Pascal distribution. If a∈N, the distribution can be interpreted as the expected time of a-th success in a sequence of Bernoulli trials, when the probability of success is p.

The probability distribution is given by:

The cumulative distribution function is as follows:

## Input Parameters

Name | Type | Description
--- | --- | ---
method | FORTRAN: INTEGER, INTENT(IN) C: int | Generation method. The specific value is: `VSL_METHOD_INEGBINOMIAL_NBAR` See brief description of the NBAR method in Table“Values of `<method>` in method parameter”
stream | FORTRAN: TYPE (VSL_STREAM_STATE), INTENT(IN) C: VSLStreamStatePtr | FORTRAN: descriptor of the stream state structure. C: pointer to the stream state structure
n | FORTRAN: INTEGER, INTENT(IN) C: int | Number of random values to be generated
a | FORTRAN: DOUBLE PRECISION, INTENT(IN) C: double | The first distribution parameter a
p | FORTRAN: DOUBLE PRECISION, INTENT(IN) C: double | The second distribution parameter p

## Output Parameters

Name | Type | Description
--- | --- | ---
r | FORTRAN: INTEGER, INTENT(OUT) C: int* | Vector of n random values with negative binomial distribution.

## Return Values

VSL_ERROR_OK, VSL_STATUS_OK
  Indicates no error, execution is successful.
VSL_ERROR_NULL_PTR
  stream is a NULL pointer.
VSL_ERROR_BAD_STREAM

  stream is not a valid random stream.

VSL_ERROR_BAD_UPDATE

  Callback function for an abstract BRNG returns an invalid number of updated entries in a buffer, that is, `< 0` or `> nmax`.

VSL_ERROR_NO_NUMBERS

  Callback function for an abstract BRNG returns 0 as the number of updated entries in a buffer.

Parent topic: Discrete Distributions