|
dasmig-core 1.2.0
Shared random engine, distributions and data tiers for the dasmig generator libraries
|
Requires C++23 (e.g.,
-std=c++23for GCC/Clang,/std:c++latestfor MSVC).
The shared foundation of the dasmig generator libraries (name, nickname, birth, biodata, country, city, entity). Each library vendors a copy.
std:: distributions cannot promise this: each standard library implements them differently.seed(), unseed() and split(label). A split stream depends only on the parent seed and the label, so adding a draw in one part of a generator does not shift the others.exp and log built only from operations IEEE 754 defines exactly, because platform std::exp and std::log differ in the last bit.file:line: column: problem), and layered tables: users add, override or replace rows with their own files, validated atomically, with a data hash for replay.resources/ from the usual working directories, or reads it from a generated header (scripts/embed.py) so a WebAssembly build needs no filesystem; both give the same data hash.seed-data replay format.item_seed, run_batch and for_each_batch generate many results from one seed, in parallel if asked, with the same output for any thread count, optional uniqueness by a key, and JSON Lines and CSV writers for the results.scripts/reference.py implements every algorithm again in Python and generates the known-answer vectors the C++ tests compare against, bit for bit. The engine is checked against published test vectors.Copy dasmig/core.hpp and the dasmig/core/ directory next to your library header, then:
See the usage guide for every function and the exact algorithms.
MIT. See LICENSE.MIT.