ShaiRandom 0.0.2

dotnet add package ShaiRandom --version 0.0.2                
NuGet\Install-Package ShaiRandom -Version 0.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ShaiRandom" Version="0.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ShaiRandom --version 0.0.2                
#r "nuget: ShaiRandom, 0.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ShaiRandom as a Cake Addin
#addin nuget:?package=ShaiRandom&version=0.0.2

// Install ShaiRandom as a Cake Tool
#tool nuget:?package=ShaiRandom&version=0.0.2                

ShaiRandom

That which is ordained.

Welcome to the homepage for ShaiRandom, a random number generator library for modern .NET platforms.

What Is It?

ShaiRandom provides high-performance non-cryptographic pseudo-random number generators for simulation, game development, or any other purposes. It also has statistical distributions and various kinds of utility code relating to random numbers, including a weighted probability table and special generators for testing that can record or reproduce a given sequence. Unary hashes are also provided in the Mixers class, which can be useful to supplant random number generators in some cases commonly encountered in game development.

It really is high-performance! Benchmarking has been done at most stages of the project on the generators (though not the distributions), and they generally outperform System.Random regardless of whether it uses the optimizations in .NET 6 or not.

Serialization is a major priority for ShaiRandom; all pseudo-random number generators can be serialized to a short string and later deserialized from that string. This includes generators that have been wrapped (with a wrapper) to alter their behavior. Serializer.Serialize() and Serializer.Deserialize() are most of what you need here.

Obtaining It

See ShaiRandom on NuGet for more.

Licensing

ShaiRandom

This project is licensed under the MIT License - see the LICENSE.md file for details.

Other Licenses

Licenses for other projects which ShaiRandom depends on or from which inspiration was taken are listed in the credits section.

Credits

ShaiRandom depends on some other .NET Standard libraries for some of its functionality. Those projects and their licenses are listed below.

jdkgdxds

This Java data structure library (by the same author as this library) has the same general structure for its random number generators and uses the same algorithms. It is licensed under Apache 2, but permission from all contributors (or the only contributor, me) to the random number generators allows that code to be freely relicensed as MIT here.

GoRogue

GoRogue was used as an optimal project structure for a .NET library targeting modern versions, and ShaiRandom is meant to be usable by GoRogue. Significant amounts of code have been exchanged back and forth to avoid duplication between ShaiRandom and GoRogue, and it is safe to say they follow similar philosophies. GoRogue's author, Chris3606, is a major contributor to this library. GoRogue is also licensed under MIT:

Troschuetz.Random

ShaiRandom's optional TroschuetzCompat library depends on Troschuetz.Random to help bridge compatibility between that now-archived library and this one. Troschuetz.Random is also licensed under MIT:

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on ShaiRandom:

Package Downloads
GoRogue

Roguelike/2D game utility library.

ShaiRandom.TroschuetzCompat

Random Number Generator Library, Troschuetz.Random Compatibility.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on ShaiRandom:

Repository Stars
Chris3606/GoRogue
.NET Standard roguelike library in C#. Features many algorithms and data structures pertinent to roguelike/2D game developers, specifically designed to be minimally intrusive upon the developer's architecture.
Version Downloads Last updated
0.0.2 2,900 6/21/2023
0.0.2-debug 131 6/21/2023
0.0.1 5,004 5/14/2022
0.0.1-debug 178 5/14/2022
0.0.1-beta03-debug 182 4/2/2022
0.0.1-beta03 2,300 4/2/2022
0.0.1-beta02-debug 161 3/27/2022
0.0.1-beta02 1,005 3/27/2022
0.0.1-beta01-debug 160 3/27/2022
0.0.1-beta01 166 3/27/2022
0.0.1-alpha05-debug 164 2/13/2022
0.0.1-alpha05 946 2/13/2022
0.0.1-alpha04-debug 181 1/27/2022
0.0.1-alpha04 176 1/27/2022
0.0.1-alpha03-debug 180 1/23/2022
0.0.1-alpha03 185 1/23/2022
0.0.1-alpha02-debug 177 1/16/2022
0.0.1-alpha02 197 1/16/2022
0.0.1-alpha01-debug 181 1/10/2022
0.0.1-alpha01 184 1/10/2022

Stable Release