Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 1.53 KB

README.md

File metadata and controls

60 lines (40 loc) · 1.53 KB

local_random is a wrapper for the standard library's <random> facilities that provides thread-local seeding and a straightforward interface suitiable for basic, non-cryptographic uses.

Mini-examples, generate a number between 0 and a maximum (inclusive):

#include "local_random"

using namespace local_random;

// ...

int x = generate_random_number(10);
float y = generate_random_number(10.0);

auto rng = random_number_generator(10);
int z = rng();

...there are plenty of things you can tune, but that's the basic idea! Each function or function object has a thread-local engine that's seeded the first time it's used. Reads from the PRNG are mutex-guarded.

Features: - self-seeding (per-thread) - thread-safe - flexible parameters - multiple interfaces (functions, classes) - straightforward use

Dependencies:

C++17

Catch2 if you want to build the tests.

To build:

No build is necessary, the library is header only.

To build examples:

cd examples make

To build tests:

The unit tests use Catch2. The Makefile looks for Catch2 in CATCH2_DIR, which defaults to "deps/Catch2/single_include" in the test directory.

A note on this project:

This is a fork of a random library developed for Ceph. I was the original designer and implementer, but this project would not have been possible without generous input from members of the Ceph community (especially Casey Bodley (@cbodley) and Adam Emerson (@adamemerson)).

I have forked this work in order to provide a standalone library suitable for uses outside of Ceph.