Depra.Random
1.1.1
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
Random Service
Contains a Random Service that provides an IRandomizer abstraction whose contract is equivalent to System.Random.
Features
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:
- Int32/Int
- Double
- Byte[]
Supported types via extension methods:
- SByte
- Byte
- Int16/Short
- UInt16/UShort
- UInt32/UInt
- Int64/Long
- UInt64/ULong
- Float
- Decimal
- Char[]
- String
- Boolean
- Enum
Extensibility (see Depra.Unity.Random);
Most of the functionality is covered by unit tests;
Also included are benchmarks that may be of interest.
Usage
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");
Integrations:
- Depra.Unity.Random - To provide support for UnityEngine.Random.
Ps
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. 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 | 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. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.