From 5245e3a8f8bcaabcbf793cacc7047dce4017dfc6 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Fri, 14 Oct 2016 21:47:36 +0200 Subject: minor documentation fixes and add cran-comments --- R/SyncRNG.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'R') diff --git a/R/SyncRNG.R b/R/SyncRNG.R index 84088b0..72156df 100644 --- a/R/SyncRNG.R +++ b/R/SyncRNG.R @@ -7,7 +7,7 @@ library(methods) #' user #' #' @examples -#' s = SyncRNG(seed=123456) +#' s <- SyncRNG(seed=123456) #' for (i in 1:10) #' cat(s$randi(), '\n') #' -- cgit v1.2.3 From 3fb8d4aca52c3004d52bd510e183c1d5682b5540 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Sun, 16 Oct 2016 12:13:36 +0200 Subject: update to latest version of roxygen --- R/SyncRNG.R | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'R') diff --git a/R/SyncRNG.R b/R/SyncRNG.R index 72156df..95e6b3e 100644 --- a/R/SyncRNG.R +++ b/R/SyncRNG.R @@ -6,6 +6,11 @@ library(methods) #' @field state The current state of the RNG, should not be modified by the #' user #' +#' @useDynLib SyncRNG +#' @export SyncRNG +#' @exportClass SyncRNG +#' @importFrom methods new +#' #' @examples #' s <- SyncRNG(seed=123456) #' for (i in 1:10) -- cgit v1.2.3 From c7c6d55dfb75804b119ae310e5c59ac238348665 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Fri, 15 Dec 2017 17:26:12 -0500 Subject: update version and documentation --- R/SyncRNG.R | 4 +++- R/syncrng-package.R | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 R/syncrng-package.R (limited to 'R') diff --git a/R/SyncRNG.R b/R/SyncRNG.R index 95e6b3e..e7176b4 100644 --- a/R/SyncRNG.R +++ b/R/SyncRNG.R @@ -1,12 +1,14 @@ library(methods) #' A Reference Class for SyncRNG +#' +#' See \link{syncrng-package} for package documentation. #' #' @field seed The seed for the random number generator #' @field state The current state of the RNG, should not be modified by the #' user #' -#' @useDynLib SyncRNG +#' @useDynLib SyncRNG, .registration = TRUE #' @export SyncRNG #' @exportClass SyncRNG #' @importFrom methods new diff --git a/R/syncrng-package.R b/R/syncrng-package.R new file mode 100644 index 0000000..949401d --- /dev/null +++ b/R/syncrng-package.R @@ -0,0 +1,50 @@ +#' @title SyncRNG - Synchronized Random Numbers in R and Python +#' +#' @description +#' The SyncRNG package provides a random number generator implemented in C and +#' linked to both R and Python. This way, you can generate the same random +#' number sequence in both languages by using the same seed. +#' +#' The package implements a Tausworthe LSFR RNG (more details at +#' \url{https://gertjanvandenburg.com/blog/syncrng/}). This is a very fast +#' pseudo-random number generator. +#' +#' @section Usage: +#' There are two ways to use this package in R. It can be used as a reference +#' class, where a SyncRNG object is used to keep the state of the generator and +#' numbers are generated using the object methods. It can also be used as a +#' user-defined random number generator using the strategy outlined in +#' .Random.user. See the examples section below. +#' +#' @author +#' Gerrit J.J. van den Burg\cr +#' Maintainer: Gerrit J.J. van den Burg +#' +#' @references +#' URL: \url{https://github.com/GjjvdBurg/SyncRNG} +#' +#' @examples +#' library(SyncRNG) +#' +#' # As user defined RNG: +#' +#' set.seed(0, 'user', 'user') +#' runif(2) +#' # [1] 3.666952e-04 6.257184e-05 +#' set.seed(0, 'user', 'user') +#' rnorm(2) +#' # [1] 0.01006027 0.42889422 +#' +#' # As class: +#' +#' s <- SyncRNG(seed=0) +#' s$rand() +#' # [1] 0.0003666952 +#' s$rand() +#' # [1] 6.257184e-05 +#' +#' @name syncrng-package +#' @docType package +#' @import methods +NULL +#>NULL -- cgit v1.2.3 From 4214782b1e06ce8510d70cc2fc36a3b544508948 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Thu, 14 Jan 2021 17:15:44 +0000 Subject: Move R package to separate directory Rearranging repository --- R/SyncRNG.R | 76 ----------------------------------------------------- R/syncrng-package.R | 50 ----------------------------------- 2 files changed, 126 deletions(-) delete mode 100644 R/SyncRNG.R delete mode 100644 R/syncrng-package.R (limited to 'R') diff --git a/R/SyncRNG.R b/R/SyncRNG.R deleted file mode 100644 index e7176b4..0000000 --- a/R/SyncRNG.R +++ /dev/null @@ -1,76 +0,0 @@ -library(methods) - -#' A Reference Class for SyncRNG -#' -#' See \link{syncrng-package} for package documentation. -#' -#' @field seed The seed for the random number generator -#' @field state The current state of the RNG, should not be modified by the -#' user -#' -#' @useDynLib SyncRNG, .registration = TRUE -#' @export SyncRNG -#' @exportClass SyncRNG -#' @importFrom methods new -#' -#' @examples -#' s <- SyncRNG(seed=123456) -#' for (i in 1:10) -#' cat(s$randi(), '\n') -#' -SyncRNG <- setRefClass('SyncRNG', - fields=list( - seed='numeric', - state='numeric' - ), - methods=list( - initialize=function(..., seed=0) { - "Initialize the RNG using the C function R_syncrng_seed" - seed <<- seed - tmp <- .Call('R_syncrng_seed', - as.numeric(seed)) - state <<- tmp[1:4] - callSuper(...) - }, - randi=function() { - "Generate a single random 32-bit integer" - tmp <- .Call('R_syncrng_rand', - as.numeric(state)) - state <<- tmp[1:4] - return(tmp[5]) - }, - rand=function() { - "Generate a single random float in the range [0, 1)" - r <- randi() - return (r * 2.3283064365387e-10) - }, - randbelow=function(n) { - "Generate a random integer below a given number" - maxsize <- 2^32 - if (n >= maxsize) { - warning(paste("Underlying random generator ", - "does not supply\n enough bits ", - "to choose from a population ", - "range this large.\n")) - return(round(rand() * n)) - } - rem <- maxsize %% n - limit <- (maxsize - rem) / maxsize - r <- rand() - while (r >= limit) - r <- rand() - return(round(r*maxsize) %% n) - }, - shuffle=function(x) { - "Randomly shuffle a provided array of values" - y <- x - for (i in rev(1:(length(y)-1))) { - j <- randbelow(i+1) - tmp <- y[i+1] - y[i+1] <- y[j+1] - y[j+1] <- tmp - } - return(y) - } - ) - ) diff --git a/R/syncrng-package.R b/R/syncrng-package.R deleted file mode 100644 index 949401d..0000000 --- a/R/syncrng-package.R +++ /dev/null @@ -1,50 +0,0 @@ -#' @title SyncRNG - Synchronized Random Numbers in R and Python -#' -#' @description -#' The SyncRNG package provides a random number generator implemented in C and -#' linked to both R and Python. This way, you can generate the same random -#' number sequence in both languages by using the same seed. -#' -#' The package implements a Tausworthe LSFR RNG (more details at -#' \url{https://gertjanvandenburg.com/blog/syncrng/}). This is a very fast -#' pseudo-random number generator. -#' -#' @section Usage: -#' There are two ways to use this package in R. It can be used as a reference -#' class, where a SyncRNG object is used to keep the state of the generator and -#' numbers are generated using the object methods. It can also be used as a -#' user-defined random number generator using the strategy outlined in -#' .Random.user. See the examples section below. -#' -#' @author -#' Gerrit J.J. van den Burg\cr -#' Maintainer: Gerrit J.J. van den Burg -#' -#' @references -#' URL: \url{https://github.com/GjjvdBurg/SyncRNG} -#' -#' @examples -#' library(SyncRNG) -#' -#' # As user defined RNG: -#' -#' set.seed(0, 'user', 'user') -#' runif(2) -#' # [1] 3.666952e-04 6.257184e-05 -#' set.seed(0, 'user', 'user') -#' rnorm(2) -#' # [1] 0.01006027 0.42889422 -#' -#' # As class: -#' -#' s <- SyncRNG(seed=0) -#' s$rand() -#' # [1] 0.0003666952 -#' s$rand() -#' # [1] 6.257184e-05 -#' -#' @name syncrng-package -#' @docType package -#' @import methods -NULL -#>NULL -- cgit v1.2.3