Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Multi type functions to work with Random numbers in a thread-safe way, in C# .Net Core 2.0. In one file to easily include in your projects

License

Notifications You must be signed in to change notification settings

iluvadev/SimpleRandom-ThreadSafe

Open more actions menu

Repository files navigation

SimpleRandom-ThreadSafe

Some simple functions in C# to work with Random numbers in a thread-safe way

Inspired by: https://devblogs.microsoft.com/pfxteam/getting-random-numbers-in-a-thread-safe-way/

The static class Rnd manages the System.Random object for you. No initialization is needed

Get a Random number

n1 = Rnd.Double();  // n1: double 
n2 = Rnd.Decimal(); // n2: decimal

n3 = Rnd.Byte();    // n3: byte
n4 = Rnd.Int16();   // n4: short (Int16)
n5 = Rnd.Int32();   // n5: int (Int32)
n6 = Rnd.Int64();   // n6: long (Int64)

n7 = Rnd.Boolean(); // n7: bool

Get a Random Number between 2 values

n1 = Rnd.Between(n1Min, n1Max); // n1, n1Min, n1Max: double
n2 = Rnd.Between(n2Min, n2Max); // n2, n2Min, n2Max: decimal

n3 = Rnd.Between(n3Min, n3Max); // n3, n3Min, n3Max: byte
n4 = Rnd.Between(n4Min, n4Max); // n4, n4Min, n4Max: short (Int16)
n5 = Rnd.Between(n5Min, n5Max); // n5, n5Min, n5Max: int (Int32)
n6 = Rnd.Between(n6Min, n6Max); // n6, n6Min, n6Max: long (Int64)

Get a Random Number Less than other

n1 = Rnd.LessThan(n1Max);  // n1, n1Max: double
n2 = Rnd.LessThan(n2Max);  // n2, n2Max: decimal

n3 = Rnd.LessThan(n3Max);  // n3, n3Max: byte
n4 = Rnd.LessThan(n4Max);  // n4, n4Max: short (Int16)
n5 = Rnd.LessThan(n5Max);  // n5, n5Max: int (Int32)
n6 = Rnd.LessThan(n6Max);  // n6, n6Max: long (Int64)

Get a Random Number Greater than other

n1 = Rnd.GreaterThan(n1Min);  // n1, n1Min: double
n2 = Rnd.GreaterThan(n2Min);  // n2, n2Min: decimal

n3 = Rnd.GreaterThan(n3Min);  // n3, n3Min: byte
n4 = Rnd.GreaterThan(n4Min);  // n4, n4Min: short (Int16)
n5 = Rnd.GreaterThan(n5Min);  // n5, n5Min: int (Int32)
n6 = Rnd.GreaterThan(n6Min);  // n6, n6Min: long (Int64)

Get a Random Item from IEnumerable, params or Enum

item1 = Rnd.From(myEnumerable);           // item1: a random item from "myEnumerable"
item2 = Rnd.From(1, 2, 3, 4, 5, 6, 7, 8); // item2: a random item from params
item3 = Rnd.From("Hello", "world");       // item3: a random item from params
item4 = Rnd.From<MyEnum>();               // item4: a random value from "MyEnum"

Get a Sequence of Random elements

// If length is null: the Enumerable is infinite

seq1 = Rnd.SequenceDouble(length);  // seq1: IEnumerable<double>
seq2 = Rnd.SequenceDecimal(length); // seq2: IEnumerable<decimal>

seq3 = Rnd.SequenceByte(length);    // seq3: IEnumerable<byte>
seq4 = Rnd.SequenceInt16(length);   // seq4: IEnumerable<short> (Int16)
seq5 = Rnd.SequenceInt32(length);   // seq5: IEnumerable<int> (Int32)
seq6 = Rnd.SequenceInt64(length);   // seq6: IEnumerable<long> (Int64)

seq7 = Rnd.SequenceBoolean(length); // seq7: IEnumerable<bool>

Get a Sequence of Random Items from IEnumerable, params or Enum

// If length is null: the Enumerable is infinite

seq1 = Rnd.SequenceFrom(length, myEnumerable);           // seq1: a sequence with random items from "myEnumerable"
seq2 = Rnd.SequenceFrom(length, 1, 2, 3, 4, 5, 6, 7, 8); // seq2: a sequence with random items from params
seq3 = Rnd.SequenceFrom(length, "Hello", "world");       // seq3: a sequence with random items from params
seq4 = Rnd.SequenceFrom<MyEnum>(length);                 // seq4: a sequence with random values from "MyEnum"

Get a Sequence Shuffling randomly an IEnumerable

(The IEnumerable to Shuffle must be finite, the process calls the Count() method)

seq1 = Rnd.Shuffle(myEnumerable); // seq1: a sequence with "myEnumerable" shuffled

About

Multi type functions to work with Random numbers in a thread-safe way, in C# .Net Core 2.0. In one file to easily include in your projects

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.