RandomIterator
RandomIterator Documentation

License Documentation Status

Table of Contents


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 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.

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.

Licensing

RandomIterator is released under the 3-Clause BSD License (SPDX short identifier: BSD-3-Clause). 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.