IAP GITLAB

Skip to content
Snippets Groups Projects
README.md 2.85 KiB
Newer Older

[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Documentation Status](https://readthedocs.org/projects/randomiterator/badge/?version=latest)](https://randomiterator.readthedocs.io/en/latest/?badge=latest)

# RandomIterator

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 Version

The latest release can be downloaded [here]( ).
## Documentation
Read the full documentation in the [page](https://randomiterator.readthedocs.io/).

## Installation and requirements

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
no. INST 37/935-1 FUGG.