diff options
Diffstat (limited to 'SyncRNG.R')
| -rw-r--r-- | SyncRNG.R | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/SyncRNG.R b/SyncRNG.R new file mode 100644 index 0000000..23be4d2 --- /dev/null +++ b/SyncRNG.R @@ -0,0 +1,29 @@ +library(methods) + +dyn.load('RSyncRNG.so') + +SyncRNG <- setRefClass('SyncRNG', + fields=list( + seed='numeric', + state='numeric' + ), + methods=list( + initialize=function(..., seed=0) { + seed <<- seed + tmp <- .Call('R_syncrng_seed', + as.integer(seed)) + state <<- tmp[1:4] + callSuper(...) + }, + randi=function() { + tmp <- .Call('R_syncrng_rand', + as.integer(state)) + state <<- tmp[1:4] + return(tmp[5]) + }, + rand=function() { + r <- randi() + return (r * 2.3283064365387e-10) + } + ) + ) |
