[R] generate random numbers

David Scott d.scott at auckland.ac.nz
Fri Apr 1 00:26:33 CEST 2011

  On 01/04/11 08:50, Ted Harding wrote:
> On 31-Mar-11 19:23:33, Anna Lee wrote:
>> Hey List,
>> does anyone know how I can generate a vector of random numbers
>> from a given distribution? Something like "rnorm" just for non
>> normal distributions???
>> Thanks a lot!
>> Anna
> SUppose we give your distribution the name "Dist".
> The generic approach would start by defining a function for
> the inverse of its cumulative distribution. Call this qDist.
> Then
>    qDist(runif(1000))
> would generate 1000 values from the distribution "Dist".
> As a ready-made example, qnorm is the inverse of pnorm,
> the cumulative distribution function of the Normal distribution.
> Then
>    qnorm(runif(1000))
> would act just like rnorm(1000), though the sequence of values
> would be different (a different algorithm) -- and also rnorm()
> would be more efficient (being specially written).
> Depending on what your desired distribution is, you may find
> that an "rDist" has already been written for it. There are
> many distributions already in R for which the family of
> functions dDist, pDist, qDist and rDist are provided.
> For more specific advice, please give us information about
> the specific distribution you want to sample from!
> Ted.

I can point to one general implementation which might be helpful, and 
even the function names are the same.

In the version of DistributionUtils on R-Forge you will find functions 
pDist and qDist which should give the distribution function and quantile 
function of any continuous unimodal distribution.

Provisos: there may be problems with distributions with very heavy 
tails, and generally the routines could be slow.

David Scott

David Scott	Department of Statistics
		The University of Auckland, PB 92019
		Auckland 1142,    NEW ZEALAND
Phone: +64 9 923 5055, or +64 9 373 7599 ext 85055
Email:	d.scott at auckland.ac.nz,  Fax: +64 9 373 7018

Director of Consulting, Department of Statistics

More information about the R-help mailing list