Re: Compiling Random Numbers from a distribution
- To: mathgroup at smc.vnet.net
 - Subject: [mg84488] Re: Compiling Random Numbers from a distribution
 - From: Bill Rowe <readnewsciv at sbcglobal.net>
 - Date: Sat, 29 Dec 2007 02:57:28 -0500 (EST)
 
On 12/28/07 at 4:11 AM, maa48 at columbia.edu (Asim) wrote:
>I am wondering why the following function works in Mathematica 6.01,
>(notice, x is not a local variable in the function below)
>v = Compile[{{mu, _Real}, {s, _Real}},
>Module[
>{m},
>x = RandomReal[NormalDistribution[0.0, 1.0]];
>m = 2 + x;
>Clear[x];
>m
>]
>]
>In[19]:= v[0.0, 1.0]
>Out[19]= 2.59192
>but the compilation in the following function which makes the
>variable x local to the function does not work
>v1 = Compile[{{mu, _Real}, {s, _Real}},
>Module[
>{m, x},
>x = RandomReal[NormalDistribution[0.0, 1.0]];
>m = 2 + x;
>m
>]
>]
I don't have an answer to your specific question but I question
the need for using Compile. I assume you are using this to
improve execution speed. If so, it appears to me (at least on my
machine) Compile doesn't really help here. Using your first
definition above for v:
In[2]:= Timing[Do[v[0., 1.];, {100000}]]
Out[2]= {3.82615,Null}
but
In[3]:= Timing[Do[RandomReal[NormalDistribution[2., 1.]];, {100000}]]
Out[3]= {0.858795,Null}
and faster is
In[4]:= Timing[
  data = RandomReal[NormalDistribution[2., 1.], 100000];]
Out[4]= {0.035228,Null}
Here, I've taken advantage of the fact if x has a normal
distribution with mean m and standard deviation s then x+const
has a normal distribution with mean m+const and standard
deviation s.
In[6]:= $Version
Out[6]= 6.0 for Mac OS X PowerPC (32-bit) (June 19, 2007)
--
To reply via email subtract one hundred and four