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