help mata mm_rbinomial()


mm_rbinomial() -- Generate binomial distributed random numbers

------------------------------------------------------------------------------- Note: An official rbinomial() function was introduced in Stata 10.1 (see help [M-5] runiform()). Official rbinomial() is much faster than mm_rbinomial(). -------------------------------------------------------------------------------


real matrix mm_rbinomial(n, p)

real matrix mm_cebinomial(n, k, p)


n: real matrix n k: real matrix k p: real matrix p


mm_rbinomial() returns a random draw from the binomial distribution where n is the number of trials and p is the success probability.

When n and p are not scalar, mm_rbinomial() returns element-by-element results. n and p are required to be r-conformable (see help [M-6] glossary).

If you are serious about generating random numbers, you should first set the random number seed; see help generate or help for [M-5] uniform().

mm_cebinomial() returns the expected value of a binomial distributed random variable conditional on the variable being equal to k or larger. That is, mm_cebinomial() returns



X ~ B(n, p)

and n is the number of trials and p is the success probability.

When n, k, and p are not scalar, mm_cebinomial() returns element-by-element results. n, k, and p are required to be r-conformable (see help [M-6] glossary).


mm_rbinomial(): If n<50 or p>.03, the random numbers are generated using the rejection technique. If n>=50 and p>=.03, the geometric distribution technique is applied (see Evans et al. 2000).

mm_cebinomial(): The expectation of X ~ B(n, p) conditional on X>=k may be written as

E(X|X>=k) = k + [ P(X>=k+1) + ... + P(X=n) ] / P(X>=k)

where P(X>=k) is the probability of k or more successes, which is computed as Binomial(n, k, p) (see [M-5] normal()).


Both functions require arguments be r-conformable (see help [M-6] glossary). Returned is a matrix of max(argument rows) rows and max(argument columns) columns containing element-by-element calculated results.


Missing value is returned if arguments are out of range (p>1, p<0, n<=0, k<0, or k>n) or contain missing value or if n and k are non-integer.

Source code

mm_rbinomial.mata, mm_cebinomial.mata


Evans, M., N. Hastings, B. Peacock (2000): Statistical Distributions. Third Edition. New York: Wiley.


Ben Jann, ETH Zurich,

Also see

Online: help for [M-5] normal(), moremata