Newer
Older
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://randomiterator.readthedocs.io/en/latest/?badge=latest)
Iterator library for lazy calculation and parallel access of counter-based random numbers.
Table of Contents
=================
* [What is it?](#what-is-it)
* [Main features](#main-features)
* [The Latest Version](#the-latest-version)
* [Documentation](#documentation)
* [Reference manual](#reference-manual)
* [Users guide](#users-guide)
* [Installation and requirements](#installation-and-requirements)
* [Examples](#examples)
* [Licensing](#licensing)
* [Contact the developers](#contact-the-developers)
* [Author](#author)
* [Acknowledgement](#acknowledgement)
--------------------------------------
## What is it?
RandomIterator is a small library providing iterators pointing to streams of pseudorandom numbers.
The library deploys lazy-evaluation and is intented for usage on multi-thread calculations.
## Main features
1. Five primary generators: Philox, ARS and Threefry from [Random123](https://ieeexplore.ieee.org/abstract/document/6114424) and Squares3 and Squares4, which are natively implemented.
2. Completly thread-safe.
3. Compatibility with all C++ distributions defined in the standard library.
4. For each seed, the ```random_iterator::Stream<Distribution, Engine>``` manages up to $`{2}^{32}`$ streams, with length $`{2}^{64}`$.
5. When instantiated to produce 64bit output, like ```double``` ou ```uint64_t```, each stream can provide up to 128EB of data.
The latest release can be downloaded [here]( ).
Read the full documentation in the [page](https://randomiterator.readthedocs.io/).
RandomIterator is a header-only library with no dependencies. So, it is only necessary
to drop the ``random_iterator`` directory, which contains the library source code somewhere
reachable to the compiler and include the ``random_iterator/Stream.cpp`` in the project code.
RandomIterator is released under the GNU General Public License version 3. Please see the file called LICENSE.
## Contacting the developers
Here’s what you should do if you need help or would like to contribute:
* If you found a bug or what to ask any question, use GitLab issues.
* If you have an idea, suggestion or whatever, use GitHub issues.
* If you want to contribute, submit a pull request.
## Acknowledgement
The authors acknowledge support by the High Performance and Cloud Computing Group
at the Zentrum für Datenverarbeitung of the University of Tübingen, the state of Baden-
Württemberg through bwHPC and the German Research Foundation (DFG) through grant