This help topic is for R version 0.90. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/Random.html
Random {base}R Documentation

Random Number Generation

Description

.Random.seed is an integer vector, containing the random number generator (RNG) state for random number generation in R.

RNGkind is a more friendly interface to query or set the kind of RNG in use.

Usage

.Random.seed <- c(rng.kind, n1, n2, ...)
save.seed <- .Random.seed

RNGkind(kind=NULL)

Arguments

kind

character or NULL. If kind is a character string, set R's RNG to the kind desired, if it's NULL, return the currently used RNG.

rng.kind

integer code in 0:k for the above kind.

n1, n2, ...

integers. See the details for how many are required (which depends on rng.kind).

Details

Currently available RNG kinds

— — to be expanded — —

((Planned additions are "Mersenne-Twister", "Knuth-TAOCP" (from TAOCP, Vol.2, 3rd ed.,1997), "Ecuyer-...", "Eichenauer-..."))

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

Value

.Random.seed is an integer vector whose first element codes the kind of RNG and therefore is in 0:k where k+1 is the number of available RNGs.
In the underlying C, .Random.seed[-1] is used as unsigned long (32 bits at least); in R, whose integers are C's long, .Random.seed[i] can therefore be negative for i > 1.

RNGkind returns the RNG in use before the call, invisibly if kind is not NULL.

Note

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

Author(s)

of RNGkind: Martin Maechler

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, 198 and 35, 89.

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

Marsaglia, G. (1997). A random number generator for C. Discussion paper, posting on usenet newsgroup sci.stat.math.

Marsaglia, G. and Zaman, A. (1994). Some portable very-long-period random number generators. Computers in Physics, 8, 117-121.

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

RNGkind("Wich")# (partial string matching on 'kind')
p.WH <- c(30269, 30307, 30323)
a.WH <- c(  171,   172,   170)
next.WHseed <- function(i.seed = .Random.seed[-1]) (a.WH * i.seed) %% p.WH
my.runif1 <- function(i.seed = .Random.seed)
  { ns <- next.WHseed(i.seed[-1]); sum(ns / p.WH) %% 1 }

## This shows how `runif(.)' works for Wichmann-Hill, using only R functions:
rs <- .Random.seed
(WHs <- next.WHseed(rs[-1]))
u <- runif(1)
all(next.WHseed(rs[-1]) == .Random.seed[-1])
all.equal(u, my.runif1(rs))


## ----
.Random.seed
ok <- RNGkind()
RNGkind("Super")#matches  "Super-Duper"
RNGkind()
.Random.seed # new, corresponding to  Super-Duper

## Reset:
RNGkind(ok)

[Package base version 0.90 ]