Metadata-Version: 1.1
Name: SyncRNG
Version: 1.1.0
Summary: A synchronized Tausworthe RNG for Python and R
Home-page: https://github.com/GjjvdBurg/SyncRNG
Author: Gertjan van den Burg
Author-email: gertjanvandenburg@gmail.com
License: GPL v2
Description: SyncRNG
        =======
        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:
        
        ```python
        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:
        
        ```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 devtools:
        
        ```R
        library(devtools)
        devtools::install_github("GjjvdBurg/SyncRNG")
        ```
        
        To install SyncRNG as a Python module, first clone the repository. The Python 
        module can then be installed locally for the user using:
        
        ```sh
        python setup.py install --user
        ```
        or system-wide through:
        
        ```sh
        sudo python setup.py install
        ```
        
        Usage
        -----
        
        In both R and Python the following methods are available for the `SyncRNG` 
        class:
        
        1. `randi()`: generate a random integer on the interval [0, 2^32).
        2. `rand()`: generate a random floating point number on the interval [0.0, 
           1.0)
        3. `randbelow(n)`: generate a random integer below a given integer `n`.
        4. `shuffle(x)`: generate a permutation of a given list of numbers `x`.
        
        Notes
        -----
        
        The random numbers are uniformly distributed on `[0, 2^32 - 1]`.
        
        
Keywords: RNG R Python
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Mathematics
