diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-10-15 10:58:41 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2016-10-16 13:00:02 +0200 |
| commit | 1981ca8c6277bda5fc145ef05e64bc0ca2752718 (patch) | |
| tree | 7e021afcbe4a0332db64b19208f3430fb4d63b05 /README.md | |
| parent | version bump due switch from md to rst (diff) | |
| download | SyncRNG-1981ca8c6277bda5fc145ef05e64bc0ca2752718.tar.gz SyncRNG-1981ca8c6277bda5fc145ef05e64bc0ca2752718.zip | |
update version and rename rst to md readme
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..08afc28 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +======= +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:: + + 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: + +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]``. + + |
