dotnet add package Depra.Random --version 1.1.1
NuGet\Install-Package Depra.Random -Version 1.1.1
<PackageReference Include="Depra.Random" Version="1.1.1" />
paket add Depra.Random --version 1.1.1
#r "nuget: Depra.Random, 1.1.1"
// Install Depra.Random as a Cake Addin #addin nuget:?package=Depra.Random&version=1.1.1 // Install Depra.Random as a Cake Tool #tool nuget:?package=Depra.Random&version=1.1.1
Contains a Random Service that provides an IRandomizer abstraction whose contract is equivalent to System.Random.
New random number generators based on System.Random:
- ConcurrentPseudoRandom - A random number generator guaranteeing thread safety;
- CryptoRandom - A random number generator based on the System.Security.Cryptography.RNGCryptoServiceProvider.
Supported types via extension methods:
Extensibility (see Depra.Unity.Random);
Most of the functionality is covered by unit tests;
Also included are benchmarks that may be of interest.
To instantiate a service you need to use the builder pattern.
Instance creation with a custom randomizer:
var randomService = new RandomServiceBuilder() .With<int>(new CutomIntRandomizer()) // Or another randomizer .Build(); // for type Int32
Instantiating with a collection of randomizers:
var randomService = new RandomServiceBuilder() .With(new PseudoRandomizers()) // Or another collection of randomizers. .Build(); // You can get randomizers from collections working with System.Random in this way: var intRandomizer = randomService.GetRandomizer(typeof(int)) intRandomizer = randomService.GetNumberRandomizer<int>(); var doubleRandomizer = randomService.GetTypedRandomizer<double>(); var byteArrayRandomizer = randomService.GetArrayRandomizer<byte>();
With the help of extension methods for randomizers, you can also get random value types that are not supported through System.Random. An example of getting a random string using INumberRandomizer<int>:
var intRandomizer = randomService.GetNumberRandomizer<int>(); var randUpperCaseString = intRandomizer.NextString(length: 10, includeLowerCase: false); var randString = intRandomizer.NextString(length: 20, allowedCharacters: "abcdef");
- Depra.Unity.Random - To provide support for UnityEngine.Random.
Some extension methods may not perform well and will be improved in future releases.
Your suggestions for improvements are welcome.
|Product||Versions Compatible and additional computed target framework versions.|
|.NET||net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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.|
|.NET Core||netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed.|
|.NET Standard||netstandard2.0 is compatible. netstandard2.1 was computed.|
|.NET Framework||net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed.|
|MonoAndroid||monoandroid was computed.|
|MonoMac||monomac was computed.|
|MonoTouch||monotouch was computed.|
|Tizen||tizen40 was computed. tizen60 was computed.|
|Xamarin.iOS||xamarinios was computed.|
|Xamarin.Mac||xamarinmac was computed.|
|Xamarin.TVOS||xamarintvos was computed.|
|Xamarin.WatchOS||xamarinwatchos was computed.|
- No dependencies.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.