trueRandom {accuracy}R Documentation

Function to return TRUE (not pseudo) random numbers, based on system and networked entropy collection.

Description

This function makes use of hardware-generated entropy to supply true random numbers. Entropy collection is slow, so its primary use to provide random numbers for cryptographic key generation and for setting the seed value for subsequent PRNG generation.

Usage

        runifT(n,min=0,max=1)
        runifS(n,...,period=10000)
        resetSeed()
        initPool(size=512, hbok=TRUE, devrndok=TRUE, silent=FALSE) 

Arguments

n number of observations. If 'length(n) > 1', the length is taken to be the number required.
min,max lower and upper limits of the distribution
size number of bytes of entropy to be retrieved into the local entropy pool
hbok use the "hotbits" entropy server
silent do not issue warnings
devrndok use /dev/random on Unix-derived systems
... pass on to runif
period number of random numbers to generate before reseeding

Details

runifT returns true random numbers in a uniform distribution. runifS returns pseudo-random numbers, reseeding with a true random number every period draws.

resetSeed resets R's own PRNG seed, set.seed, supplying a true random number

initPool provides lower level control over how the external entropy sources used by runifT and resetSeed are accessed

These routines provides true random numbers by accessing external entropy collectors. Currently entropy can be retrieved from two different sources. (1) The "Hotbits" server http://www.fourmilab.ch/hotbits/ supplies random bytes based on radioactive decay. (2) On Unix systems, the the kernel gathers environmental noise from device drivers and other sources into an entropy pool, which can be accessed through '/dev/random'.

By default, /dev/random will be preferred, if available, with hotbits used only if /dev/random is not found. In addition, entropy will be requested from the external sources in 512byte blocks (runifT will automatically request more blocks if necessary to satisfy a request). Use initPool to change the source and block size.

Value

runifT Returns a vector of uniformly distributed true random numbers. resetSeed returns the status of set.seed()

Author(s)

Micah Altman Micah_Altman@harvard.edu http://www.hmdc.harvard.edu/micah_altman/

References

Altman, M., J. Gill and M. P. McDonald. 2003. Numerical Issues in Statistical Computing for the Social Scientist. John Wiley & Sons. http://www.hmdc.harvard.edu/numerical_issues/

See Also

See Also runif, .Random.seed,

Examples

# note, if you are using Windows, you must be on-line
# to get to entropy generator, will fall-back to pseudo-random
# numbers when off-line

# only needed  to pass R CMD check on online windows
w = options("warn");
options(warn=0);

# reset the seed for runif() based on a true random value

resetSeed()
y=runif(100)
ty= table(trunc(5*y))
print(ty);
chisq.test(ty)

# generate true random values directly (may block for long periods if 
# if entropy pool is empty)

y=runifT(100)
ty= table(trunc(5*y))
print(ty);
chisq.test(ty)
options(warn=as.integer(w));


[Package accuracy version 1.06 Index]