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.
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 99Random 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.
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.
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.
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.
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.dllIf 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.