Re: Re: normal distribution random number generation
- To: mathgroup at smc.vnet.net
- Subject: [mg51278] Re: [mg51265] Re: normal distribution random number generation
- From: DrBob <drbob at bigfoot.com>
- Date: Tue, 12 Oct 2004 01:57:41 -0400 (EDT)
- References: <ck0be4$nru$1@smc.vnet.net> <200410110525.BAA05021@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
He's right! How the devil does that happen? Here's a test, with Andrzej's package loaded in my Init file. First, with n=250: Quit SeedRandom[5] Table[Random[],{250}]; Last@% 0.107874 Unprotect[Random]; Clear@Random SeedRandom[5] Table[Random[],{250}]; Last@% 0.107874 Now, with n=249: Quit SeedRandom[5] Table[Random[],{249}]; Last@% 0.656099 Unprotect[Random]; Clear@Random SeedRandom[5] Table[Random[],{249}]; Last@% 0.0708373 Bobby On Mon, 11 Oct 2004 01:25:24 -0400 (EDT), Mark Fisher <mark at markfisher.net> wrote: > 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 >>> >> >> > > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Re: normal distribution random number generation
- From: Mark Fisher <mark@markfisher.net>
- Re: normal distribution random number generation