The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Version: 1.3.3
Date: 2024-02-11
Title: A Synchronized Tausworthe RNG for R and Python
Author: Gertjan van den Burg <gertjanvandenburg@gmail.com>
Maintainer: Gertjan van den Burg <gertjanvandenburg@gmail.com>
Depends: R (≥ 3.0.0)
Description: Generate the same random numbers in R and Python.
License: GPL-2
Imports: methods
Suggests: testthat
Encoding: UTF-8
RoxygenNote: 7.3.1
NeedsCompilation: yes
Packaged: 2024-02-11 12:25:36 UTC; gertjan
Repository: CRAN
Date/Publication: 2024-02-11 12:40:02 UTC

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 https://gertjanvandenburg.com/blog/syncrng/). This is a very fast pseudo-random number generator.

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(s)

Gerrit J.J. van den Burg
Maintainer: Gerrit J.J. van den Burg <gertjanvandenburg@gmail.com>

References

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


A Reference Class for SyncRNG

Description

See syncrng-package for package documentation.

Fields

seed

The seed for the random number generator

state

The current state of the RNG, should not be modified by the user

Methods

initialize(..., seed = 0)

Initialize the RNG using the C function R_syncrng_seed

rand()

Generate a single random float in the range [0, 1)

randbelow(n)

Generate a random integer below a given number

randi()

Generate a single random 32-bit integer

shuffle(x)

Randomly shuffle a provided array of values

Examples

s <- SyncRNG(seed=123456)
for (i in 1:10)
  cat(s$randi(), '\n')

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.