Re: RandomArray from user defined distribution?

• To: mathgroup at smc.vnet.net
• Subject: [mg73356] Re: RandomArray from user defined distribution?
• From: Bill Rowe <readnewsciv at sbcglobal.net>
• Date: Tue, 13 Feb 2007 07:04:02 -0500 (EST)

```On 2/12/07 at 5:01 AM, robIV at piovere.com (rob) wrote:

>I'd like to use the RandomArray to produce some data from what I
>think is a Poisson distribution in t P[t] = a^2 t Exp[-a*t]  where a
>is mean, sigma.

The PDF for a Poisson distribution isn't what you have written

In[8]:=
PDF[PoissonDistribution[a],t]

Out[8]=
a^t/(E^a*t!)

>I see one can use RandomArray to produce sample data from a lot of
>continuous distributions but the Poisson isn't among them (it's only
>available in the discrete form).

RandomArray definitely works with discrete distributions as
demonstrated by

In[10]:=
SeedRandom[1];

In[11]:=
Timing[a=Table[Random[PoissonDistribution[3]],{1000}];]

Out[11]=
{0.612178 Second,Null}

In[12]:=
SeedRandom[1];

In[13]:=
Timing[b=RandomArray[PoissonDistribution[3],1000];]

Out[13]=
{0.008636 Second,Null}

In[14]:=
a==b

Out[14]=
True

Note, the difference between
RandomArray[PoissonDistribution[3],1000] and doing
Random[PoissonDistribtuion[3]] 1000 times is that RandomArray
makes use of details of the specific algorithm for generating
Poisson deviates. And since RandomArray is specifically coded
for each distribution that similar performance improvements are
possible, it is not a good starting point for creating your own
custom distribution. To roll your own, you will want to start
from Random rather than RandomArray.

=46inally, you should be aware creating your own random number
generator for an arbitrary distribution is far from a trivial
exercise. The text Seminumerical Algorithms Vol 2 by Knuth
provides quite a bit of detail regarding psuedo random number
generators. Another good source of information is the text by
Colin Rose and Murray Smith, Mathmatical Statistics  with
Mathematica. This latter reference is particularly useful as it
comes with a package for Mathematica that among other things
provides tools for generating random numbers from arbitrary