# [R] random number generator?

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Tue Jan 28 20:36:03 CET 2003

```"Charles Annis, P.E." <AnnisC at asme.org> writes:

>
> I realize that no random number generator is perfect, so what I report
> below may be a result of that simple fact.  However, if I have made an
> error in my thinking I would greatly appreciate being corrected.
>
> I wish to illustrate the behavior of small samples (n=10) and so
> generate 100,000 of them.
>
> n.samples <- 1000000
> sample.size = 10
> p <- 0.0001
> z.normal <- qnorm(p)
> # generate n.samples of sample.size each from a normal(mean=0, sd=1)
> density
> #
> small.sample <- matrix(rnorm(n=sample.size*n.samples, mean=0, sd=1),
> nrow=n.samples, ncol=sample.size)
> # Verify that from the entire small.sample matrix, p sampled values are
> below, p above.
> #
> observed.fraction.below <- sum(small.sample <
> z.normal)/length(small.sample)
> observed.fraction.above <- sum(small.sample >
> -z.normal)/length(small.sample)
>
> > observed.fraction.below
>  6.3e-05
> > observed.fraction.above
>  0.000142
> >
>
> I've checked the behavior of the entire sample's mean and median and
> they seem fine.  The total fraction in both tails is 0.0002, as it
> should be.  However in every instance about 1/3 are in the lower tail,
> 2/3 in the upper.  I also observe the same 1/3:2/3 ratio for one million
> samples of ten.
>
> Is this simply because random number generators aren't perfect?  Or have
> I stepped in something?
>
> Thank you for your kind counsel.

You stepped in something, I think, but I probably shouldn't elaborate
on the metaphor ... There's an unfortunate interaction between the two
methods that are used for generating uniform and normal variables (the
latter uses the former). This has been reported a couple of times
before and typically gives anomalous tail behaviour. Changing one of
the generators (see help(RNGkind)) usually helps.

--
O__  ---- Peter Dalgaard             Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics     2200 Cph. N
(*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907

```