R/qrng.R

quantum_runif = function(n, min = 0.0, max = 1.0,..., 
		user = getOption("qrng.user"), password = getOption("qrng.password")) {
	stopifnot(!is.null(user))
	stopifnot(!is.null(password))
	ret = .Call("QRNG", as.integer(n), user, password)
	min + ret * max
}

setup_QRNG = function(user = getOption("qrng.user"), 
		password = getOption("qrng.password"), ssl = TRUE, bufsize = 1e5) {
	stopifnot(!is.null(user))
	stopifnot(!is.null(password))
	stopifnot(is.logical(ssl))
	stopifnot(bufsize > 0)
	.Call("setup_QRNG", user, password, as.integer(ssl), as.integer(bufsize))
	RNGkind("user")
}

QRNG_seed = function(user = getOption("qrng.user"), 
		password = getOption("qrng.password")) {
	stopifnot(!is.null(user))
	stopifnot(!is.null(password))
	.Call("QRNG_seed", user, password)
}

.onUnload <- function(libpath) {
	.C("close_QRNG")
    library.dynam.unload("qrng", libpath)
}

#.onLoad <- function(lib, pkg) {
.onAttach <- function(lib, pkg) {
	tr = try(setup_QRNG(), silent = TRUE)
	if (class(tr) != "try-error")
		packageStartupMessage(
			"Random numbers are now generated by qrng; use RNGkind(\"default\") to revert back.\n")
}
edzer/qrng documentation built on May 15, 2019, 11:08 p.m.