## Random Number Generation

## Usage

    .Random.seed <- c(n1, n2, n3)

## Description

`.Random.seed` is an integer vector of length 3, containing the ``seed'' for all random number generation in R. The Wichmann-Hill generator is used which has a cycle length of 6.9536e12 (= `prod(p-1)/4` where `p` is the length 3 vector of primes, below), see p.123 of Applied Statistics (1984) vol.33 which corrects the original article.

## Value

`.Random.seed == r[1:3]`, where `r[i]` is in `1:p[i]`, and `p = (30269, 30307, 30323)`.

Note: If any of `.Random.seed[i]` is set to `0`, it will be substituted with `1`, in the next call to a random number generator, such as `runif`.

## Note

Initially, there is no seed; a new one is created, using ``Randomize''. Hence, student exercises will each have different simulation results, by default.

## References

B.A. Wichmann and I. D. Hill (1982). Algorithm AS 183: An Efficient and Portable Pseudo-random Number Generator, Applied Statistics, 31, 188-190; Remarks: 34,p.198 and 35, p.89.

A. De Matteis and S. Pagnutti (1993). Long-range Correlation Analysis of the Wichmann-Hill Random Number Generator, Statist. Comput., 3, 67-70.

## See Also

`runif`, `rnorm`, ....

## Examples

    runif(1); .Random.seed; runif(1); .Random.seed
    ## If there is no seed,  a ``random'' new one is created:
    rm(.Random.seed); runif(1); .Random.seed

    p.WH <- c(30269, 30307, 30323)
    a.WH <- c(  171,   172,   170)
    R.seed <- function(i.seed = .Random.seed) (a.WH * i.seed) %% p.WH
    my.runif1 <- function(i.seed = .Random.seed)
      { ns <- R.seed(i.seed); sum(ns / p.WH) %% 1 }

    ## This shows how `runif(.)' works, just using  R functions :
    rs <- .Random.seed
    R.seed(rs); u <- runif(1); .Random.seed; c(u, my.runif1(rs))

[Package Contents]