Skip to content

Repository files navigation

RandEXom

RandEXom is a C# randomization library for .NET Standard 2.1. It provides interchangeable random sources and seed generators, plus helpers for shuffling, weighted picks, percentages, and number ranges.

Quick start

Download the latest source build on GitHub Releases, including RandEXom.dll, TestOut, and the benchmark app. The Windows x64 apps require the .NET 8 runtime.

using RandEXom.RandomLib;

var random = new ModuloRandom(seed: 12345);
int value = random.NextInt(0, 100); // 0 through 99

Random range methods include the minimum and exclude the maximum.

Version note: v1.5b fixes generator and range calculations. Seeded sequences may differ from earlier releases.

Documentation

Read the hosted documentation on GitHub Pages for the styled sidebar, chapter navigation, and previous/next links. The Markdown sources below remain available in the repository.

Read how RandEXom fits together first: SeedLib manages state → RandomLib turns state into draws → Framework uses draws for application behavior. Utility provides supporting functions; Interface defines the contracts between layers.

Next step Guide
Install and make a first draw Installation · Getting started
Choose the seed progression and random source SeedLib · RandomLib
Apply task-specific behavior Framework overview → Boolean · Item · Number
Understand support and customization Utility · Interfaces, extension, and limitations
Find the original research and parameter sources Research and provenance
Locate a particular class Class index

The documentation home is also included in the repository. The library targets .NET Standard 2.1; the verification project targets .NET 8. There is no published NuGet package listed here—use the release DLL or a source-project reference.

To rebuild the GitHub Pages guide after editing the Markdown sources, run docfx build RandEXom/docfx.json from the repository root and commit the updated docs/guide files. The repository's GitHub Pages site serves the docs/ directory; docs/.nojekyll keeps DocFX assets intact.

Verification

Run dotnet run --project Verification/Verification.csproj to check the published LCG sequence and the library's range, weighted draw, percentage, and distance edge cases.

Output examples

Open RandExOmTestOut.exe for interactive demonstrations, or run dotnet run --project RandExOmTestOut/RandExOmTestOut.csproj. The TestOut guide documents all nine menu options and the item-tree keep/remove output.

Benchmarks

RandEXomBenchmark loads a DLL at runtime and discovers supported classes/methods, with configurable random/seed injection. It has no reference to the RandEXom project. Publish the runner once, then use the executable beside any compatible RandEXom.dll. See the benchmark guide for publishing, coverage, and report interpretation.

Double-click the executable for a numbered menu like TestOut, or pass arguments from PowerShell as below.

See the measured benchmark comparisons for timing, allocation, randomness diagnostics, run configuration, and downloadable reports from the current build.

.\RandEXomBenchmark.exe performance --dll RandEXom.dll
.\RandEXomBenchmark.exe quality --dll RandEXom.dll

Support the project

If RandEXom has been useful, you can support its development through Trakteer or send crypto directly:

Asset Network Address
BNB BNB Smart Chain (BEP-20) 0xE122d7d44604d59b27Ca3FAA44Fc1Da94CE0aE03
SOL Solana C8A5J9w7UkXeLVeCWhpP47SPCPvnuS55RJWybzFhB3jF

Before sending, check both the network and the full address in your wallet. Crypto transfers to an incorrect address or network may not be recoverable. Donations are optional and do not affect the MIT license.