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