
{{alias}}( r, p )
    Returns a pseudorandom number drawn from a negative binomial distribution.

    If `p` is not in the interval `(0,1)`, the function returns `NaN`.

    If `r` or `p` is `NaN`, the function returns `NaN`.

    Parameters
    ----------
    r: number
        Number of successes until experiment is stopped.

    p: number
        Success probability.

    Returns
    -------
    r: integer
        Pseudorandom number.

    Examples
    --------
    > var r = {{alias}}( 20, 0.8 );


{{alias}}.factory( [r, p, ][options] )
    Returns a pseudorandom number generator (PRNG) for generating pseudorandom
    numbers drawn from a negative binomial distribution.

    If provided `r` and `p`, the returned PRNG returns random variates drawn
    from the specified distribution.

    If not provided `r` and `p`, the returned PRNG requires that both `r` and
    `p` be provided at each invocation.

    Parameters
    ----------
    r: number (optional)
        Number of successes until experiment is stopped.

    p: number (optional)
        Success probability.

    options: Object (optional)
        Options.

    options.prng: Function (optional)
        Pseudorandom number generator (PRNG) for generating uniformly
        distributed pseudorandom numbers on the interval `[0,1)`. If provided,
        the `state` and `seed` options are ignored. In order to seed the
        returned pseudorandom number generator, one must seed the provided
        `prng` (assuming the provided `prng` is seedable).

    options.seed: integer|ArrayLikeObject<integer> (optional)
        Pseudorandom number generator seed. The seed may be either a positive
        unsigned 32-bit integer or, for arbitrary length seeds, an array-like
        object containing unsigned 32-bit integers.

    options.state: Uint32Array (optional)
        Pseudorandom number generator state. If provided, the `seed` option is
        ignored.

    options.copy: boolean (optional)
        Boolean indicating whether to copy a provided pseudorandom number
        generator state. Setting this option to `false` allows sharing state
        between two or more pseudorandom number generators. Setting this option
        to `true` ensures that a returned generator has exclusive control over
        its internal state. Default: true.

    Returns
    -------
    rand: Function
        Pseudorandom number generator (PRNG).

    Examples
    --------
    // Basic usage:
    > var rand = {{alias}}.factory();
    > var r = rand( 20, 0.3 );
    > r = rand( 10, 0.77 );

    // Provide `r` and `p`:
    > rand = {{alias}}.factory( 10, 0.8 );
    > r = rand();
    > r = rand();


{{alias}}.NAME
    Generator name.

    Examples
    --------
    > var str = {{alias}}.NAME
    'negative-binomial'


{{alias}}.PRNG
    Underlying pseudorandom number generator.

    Examples
    --------
    > var prng = {{alias}}.PRNG;


{{alias}}.seed
    Pseudorandom number generator seed.

    Examples
    --------
    > var seed = {{alias}}.seed;


{{alias}}.seedLength
    Length of generator seed.

    Examples
    --------
    > var len = {{alias}}.seedLength;


{{alias}}.state
    Generator state.

    Examples
    --------
    > var r = {{alias}}( 20, 0.3 )
    <number>
    > r = {{alias}}( 20, 0.3 )
    <number>
    > r = {{alias}}( 20, 0.3 )
    <number>

    // Get a copy of the current state:
    > var state = {{alias}}.state
    <Uint32Array>

    > r = {{alias}}( 20, 0.3 )
    <number>
    > r = {{alias}}( 20, 0.3 )
    <number>

    // Set the state:
    > {{alias}}.state = state;

    // Replay the last two pseudorandom numbers:
    > r = {{alias}}( 20, 0.3 )
    <number>
    > r = {{alias}}( 20, 0.3 )
    <number>


{{alias}}.stateLength
    Length of generator state.

    Examples
    --------
    > var len = {{alias}}.stateLength;


{{alias}}.byteLength
    Size (in bytes) of generator state.

    Examples
    --------
    > var sz = {{alias}}.byteLength;


{{alias}}.toJSON()
    Serializes the pseudorandom number generator as a JSON object.

    Returns
    -------
    out: Object
        JSON representation.

    Examples
    --------
    > var o = {{alias}}.toJSON()
    { 'type': 'PRNG', 'name': '...', 'state': {...}, 'params': [] }

    See Also
    --------

