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
>>
>
>
- Follow-Ups:
- Re: Re: normal distribution random number generation
- From: DrBob <drbob@bigfoot.com>
- Re: Re: normal distribution random number generation