A synchronized Tausworthe RNG for Python and R

## Project description

A synchronized Tausworthe RNG usable in R and Python.

## Why?

This program was created because it was desired to have the same random numbers in both R and Python programs. Although both languages implement a Mersenne-Twister RNG, the implementations are so different that it is not possible to get the same random numbers with the same seed.

SyncRNG is a Tausworthe RNG implemented in `syncrng.c`, and linked to both R
and Python. Since both use the same underlying C code, the random numbers will
be the same in both languages, provided the same seed is used.

## How

First install the packages as stated under Installation. Then, in Python you can do:

from SyncRNG import SyncRNG s = SyncRNG(seed=123456) for i in range(10): print(s.randi())

Similarly, after installing the R library you can do in R:

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

You’ll notice that the random numbers are indeed the same.

## Installation

Installing the R package can be done through CRAN:

install.packages('SyncRNG')

The Python package can be installed using pip:

pip install syncrng

## Usage

In both R and Python the following methods are available for the `SyncRNG`
class:

`randi()`: generate a random integer on the interval [0, 2^32).`rand()`: generate a random floating point number on the interval [0.0, 1.0)`randbelow(n)`: generate a random integer below a given integer`n`.`shuffle(x)`: generate a permutation of a given list of numbers`x`.

## Notes

The random numbers are uniformly distributed on `[0, 2^32 - 1]`.

## Project details

## Release history Release notifications

## Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|

SyncRNG-1.2.1.tar.gz (5.0 kB) Copy SHA256 hash SHA256 | Source | None |