# [Rd] rmultinom() -- how \\ via own C code?

**Kurt Hornik
**
Kurt.Hornik@wu-wien.ac.at

*Mon Jan 27 23:31:03 2003*

>>>>>* Ben Bolker writes:
*
>* I use multivariate random values frequently -- multinomial (using
*>* code contributed to the R-list by Ian Wilson), Dirichlet (using ratios
*>* of gamma/sum(gamma)), multivariate normal (using mvrnorm() from MASS,
*>* which I wish were called rmvnorm instead!) I have functions for them
*>* in some of my home-brewed packages. I would vote for adding some of
*>* them to the recommended packages.
*
>* Many multinomial distributions have matrices or vectors of
*>* arguments: if one wants to generate multiple variates with different
*>* parameters, how should these arguments be stacked? e.g. for
*>* multinomial deviates, should one be able to specify an m by p matrix
*>* for "prob" where m is a divisor of n?
*
I have recently added code to r-devel to generate random two-way tables
with given row and column totals. This works as
r2dtable(n, r, c)
where r and c are the row and column totals, and returns a *list* of
length n. If each draw gives a random 'vector' one can stack the
results into a matrix as does e.g. mvrnorm in MASS, or one could return
a list; in the general case, I think we always want a list of random
objects.
>* The other minor point is that I usually give d- and r-functions for
*>* these distributions but not p- and q- (since I don't really want to
*>* think about defining, much less computing, multidimensional cumulative
*>* distributions ...)
*
[Although e.g. simulating the distribution of random tables with given
marginals and doing computations on that would be rather nice ...]
Best
-k