OpenRK - Open Randomness Kit
----------------------------
A software development kit for the generation of pseudorandom numbers
and related tasks.
About
-----
The OpenRK - Open Randomness Kit library is a collection of pseudorandom
numbers related routines for numerical computing for C and C++ programmers.
It was developed from scratch in C to provide a modern and simple to use
Applications Programming Interface (API), which helps in decreasing your
development time and help you achieve better results. It is intended for
ordinary scientific users. Anyone who knows some C programming will be
able to start using it straight-away.
The library is thread-safe, easy to compile and does not have any
dependencies on other packages making it portable easy.
It provides a wide range of routines such as up-to-date 64bits pseudorandom
number generators, special functions for value convertion and random number
distributions.
The OpenRK - Open Randomness Kit library is “free software”, this means
that everyone is free to use it, and to redistribute it in other free
programs. The library is not in the public domain, it is distributed
under the GNU Affero General Public License.
Features
--------
The range of subject features covered by the OpenRK library include:
* Pseudorandom number generators:
- Lcg64
- Mlcg64
- LCG96
- Lcg128
- Mlcg128
- Taus258
- Lfg64
- Alfg64
- Mlfg64
- Gfsr2
- Gfsr4
- Xorshift64
- Mt64
- Tinymt64
- Splitmix
- Pcg64_RXS_M_XS
- Pcg64_XSL_RR_RR
- Pcg128_XSL_RR
- Pcg128_XSH_RR
- Pcg128_XSH_RS
- MLehmer
- Wyrand
- Wyhash
- Jsp
- Msws
- Jlkiss64
* Random Number Distributions:
- The Gaussian Distribution
- The Gaussian Tail Distribution
- The Bivariate Gaussian Distribution
- The Exponential Distribution
- The Laplace Distribution
- The Exponential Power Distribution
- The Cauchy Distribution
- The Rayleigh Distribution
- The Rayleigh Tail Distribution
- The Landau Distribution
- The Levy alpha-Stable Distribution
- The Levy skew alpha-Stable Distribution
- The Gamma Distribution
- The Flat (Uniform) Distribution
- The lognormal distribution
- The Chi-squared Distribution
- The F-distribution
- The t-distribution
- The Beta Distribution
- The Logistic Distribution
- The Pareto Distribution
- The Spherical Vector Distributions
- The Weibull Distribution
- The Type-1 Gumbel Distribution
- The Type-2 Gumbel Distribution
- The Dirichlet Distribution
- The Bates Distribution
- The Irwin–Hall Distribution
- The Triangular Distibution
- The Rennan Distribution
- The valley Distribution
- The Poisson Distribution
- The Bernoulli Distribution
- The Binomial Distribution
- The Multinomial Distribution
- The Negative Binomial Distribution
- The Pascal Distribution
- The Geometric Distribution
- The Hypergeometric Distribution
- The Logarithmic Distribution
* Error management
* Sampling and mixing data
* Ranged integers
* Integer to floating point convertion
Installation from distribution packages
---------------------------------------
Using distribution packages on Linux, BSD and similar distributions
is the easiest and recommended way. This way you will also benefit
from automatic OpenRK updates by the package manager of the distribution.
By the time being OpenRK is a recent software and is not available in
many distribuitions.
Installation from sources
-------------------------
Requirements
++++++++++++
For compiling OpenRK yourself, you will need a 64BITS(*) unix like system
(Linux or BSD based systems are a good choise), preferable hardware with
an integer mode wide enough to hold 128 bits, and optionally equiped with
an on-chip hardware random number generator (The RDSEED and RDRAND
instructions available in modern x86-64 processors are the sets currently
supported).
Furthermore you need, of course, a C compiler and optionaly the Make tool.
The GNU versions of these tools are recommended, but the code should
compile with any standards compliant compiler.
(*) OpenRK is 64Bits native, it doesn't support or work on 32bits systems.
Installing from a release tarball
+++++++++++++++++++++++++++++++++
Unpack the archive tarball change to the created directory openrk-x.x.x.x
and run the following three commands:
$ ./configure (or $ sh configure)
$ make
$ make install (as root, or using sudo)
For more configuration details run `./configure -help` or `./configure -h`.
Alternatively run the instalation script:
$ ./install.sh
For more configuration details run `./install -help` or `./install -h`.
If there are any errors during compilation, check your build environment
and try to find the error, otherwise contact the author.
Use OpenRK in your programs
---------------------------
The file openrk.h contains all definitions needed to use the OpenRK library.
Include it in your code and use the compiler option -lopenrk to link your
program to the OpenRK library (dynamic linking):
$ cc -o myprog myprog.c -lopenrk
You can also compile OpenRK directly with your programs. This is easy as
the entire library code consists of two files, openrk.h and openrk.c.
$ cc -o myprog myprog.c openrk.c
In this case if your system has the instructions rdseed and rdrnd and you
want to use them you must add the compiler options -mrdrnd and -mrdseed.
$ cc -o myprog myprog.c openrk.c -mrdrnd -mrdseed
You can check if this instructions are avaiable in your system by reading
the flags section of system file /proc/cpuinfo.
License
-------
OpenRK is is free software distributed under under the terms of the
GNU Affero General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any
later version. A copy of this license can be found in the file agpl.txt
included with the source code of this software.
The included examples, demos and tools have their own licenses, which can
be found included in the source code file, at the top of each file.
Ideas, questions, patches and bug reports
-----------------------------------------
Any feedback is very welcome (sugestions, ideias, bug report or fixes, etc.).
See https: https://sourceforge.net/projects/openrk/
email: <jfernandes.bitalley@yahoo.com>
OpenRK Files
A software development kit for the generation of pseudorandom numbers
Brought to you by:
jfernandes2