Chapter 12: Random Number Generation > random_binomial

random_binomial

Generates pseudorandom numbers from a binomial distribution.

Synopsis

#include <imsls.h>

int *imsls_f_random_binomial (int n_random, int n, float p, ..., 0)

The type double function is imsls_d_random_binomial.

Required Arguments

int n_random   (Input)
Number of random numbers to gesnerate.

int n   (Input)
Number of Bernoulli trials.

float p   (Input)
Probability of success on each trial. Parameter p must be greater than 0.0 and less than 1.0.

Return Value

An integer array of length n_random containing the random binomial deviates.

Synopsis with Optional Arguments

#include <imsls.h>

int *imsls_f_random_binomial (int n_random, int n, float p,
IMSLS_RETURN_USER, int ir[],
0)

Optional Arguments

IMSLS_RETURN_USER, int ir[]   (Output)
User-supplied integer array of length n_random containing the random binomial deviates.

Description

Function imsls_f_random_binomial generates pseudorandom numbers from a binomial distribution with parameters n and p. Parameters n and p must be positive, and p must less than 1. The prob­ability function (with n = n and p = p) is

for x = 0, 1, 2, n.

The algorithm used depends on the values of n and p. If np < 10 or p is less than machine epsilon (see imsls_f_machine, Chapter 15, “Utilities”), the inverse CDF technique is used; otherwise, the BTPE algorithm of Kachitvichyanukul and Schmeiser (see Kachitvichyanukul 1982) is used. This is an acceptance/rejection method using a composition of four regions. (TPE=Triangle, Parallelogram, Expo­nential, left and right.)

Example

In this example, imsls_f_random_binomial generates five pseudorandom binomial deviates from a binomial distribution with parameters 20 and 0.5.

#include <stdio.h>

#include <imsls.h>

 

int main()

{

    int   n_random = 5;

    int   n = 20;

    float p = 0.5;

    int   *ir;

 

    imsls_random_seed_set(123457);

    ir = imsls_f_random_binomial(n_random, n, p, 0);

    imsls_i_write_matrix("Binomial (20, 0.5) random deviates:",

        1, n_random, ir, IMSLS_NO_COL_LABELS, 0);

}

Output

Binomial (20, 0.5) random deviates:

       14    9   12   10   12


RW_logo.jpg
Contact Support