MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: normal distribution random number generation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg51265] Re: normal distribution random number generation
  • From: Mark Fisher <mark at markfisher.net>
  • Date: Mon, 11 Oct 2004 01:25:24 -0400 (EDT)
  • References: <ck0be4$nru$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

FYI: I've just a little testing and I find that Mathematica ignors the user 
defined rules for Random in Table[Random[],{n}] when n >= 250.

Andrzej Kozlowski wrote:
> The problem is not actually with the way Mathematica's 
> NormalDistribution but with the uniformly distributed Random[] 
> function.
> NormalDistribution itself is generated (in the package 
> Statistics`NormalDistribution`) by means of the very classical so 
> called Boox-Muller method (although actually the Marsaglia variant 
> below works better). You can try downolading my little 
> RandomReplacement package form one of my web sites:
> 
> http://www.akikoz.net/~andrzej//Mathematica/  in Japan
> 
> or
> 
> http://www.mimuw.edu.pl/~akoz/Mathematica/   in Poland
> 
> The package is based on the post of daniel Lichtblau, which explains 
> the nature of the problem:
> 
> <http://library.wolfram.com/mathgroup/archive/2000/May/msg00088.html>
> 
> 
> 
> The package is named init.m and can be loaded automatically at the 
> start of each Mathematica session.
> However, in fact if you are only concerned with normal distributions it 
> may be enough to the following. First load the (unmodified)  
> NormalDistribution package using
> 
> <<Statistics`NormalDistribution`
> 
> and then evaluate the code below. It will replace the Box-Muller 
> generator by the Marsaglia one. I have found that this is usually 
> enough. But if your problem still remains try the RandomReplacement 
> package. (Or you can use both of course). Here is the Marsaglia code 
> for normal distribution:
> 
> 
> Statistics`NormalDistribution`Private`normal=
>      Compile[{{mu,_Real},{sigma,_Real},{q1,_Real},{q2,_Real}},
>        Module[{va=1.,vb,rad=2.,den=1.},
>          While[rad>=1.,va=2.*Random[]-1.;vb=2.*Random[]-1.;
>            rad=va*va+vb*vb];
>          den=Sqrt[-2.*(Log[rad]/rad)];
>          mu+sigma*va*den]];
> 
> 
> 
> On 5 Oct 2004, at 17:36, Chris Kunkel wrote:
> 
> 
>>*This message was transferred with a trial version of CommuniGate(tm) 
>>Pro*
>>Hello,
>>
>>Recently I have encountered a problem in Mathematica's normal
>>distribution random number generator.  The problem arises when I look
>>at the distribution of averages of a list of theses numbers.  That is,
>>I generate 1000 numbers and take their average.  I do this a number of
>>times and the plot a frequency distribution.  Consistently it seems to
>>be skewed positive.  Specifically, the number of occurrences less than
>>3 standard deviations is consistent with the expected number, but the
>>number greater than 3 is always larger (in some cases about twice the
>>expected number).
>>
>>I was wondering if anyone else has noticed this and knows of a fix.
>>Also, does anyone have code for a good quality normal distribution
>>random number generator?
>>
>>Chris
>>
> 
> 


  • Prev by Date: Re: plotting groups of polynomial roots
  • Next by Date: Re: cross-product in cylindrical problem
  • Previous by thread: Re: Re: normal distribution random number generation
  • Next by thread: Re: Re: normal distribution random number generation