Click here to Skip to main content
15,881,424 members
Articles / Programming Languages / C#
Tip/Trick

Random Values in .NET - Some Library

Rate me:
Please Sign up or sign in to vote.
2.93/5 (20 votes)
9 May 2016CPOL1 min read 36.3K   18   43
The open source lightweight library to generate random values for string, float, date, double and decimal.

Introduction

I figured out that there is no library in .NET Framework which allows to generate random values of predefined types. I decided to create Some library which generates most random values of predefined types like decimal, float, string, etc. with many options of generating.

This is to generate random values in UnitTests and database values.

How To Get It?

You can download the source code from GitHub or nuget by typing Some keyword. See the screenshot below.

Image 1

How To Use It?

When you get the newest version, now you can random values of predefined types. Let's see some examples.

Default seed value

C#
// <summary>
/// Default constructor
/// </summary>
static Some()
{
        RandomCharacters = new StringBuilder();
        randomizer = new Random((int)DateTime.Now.Ticks);
}

Positive float

C#
float floatValue = Some.PositiveFloat();

will generate random value from 0 to max float.

Negative float

C#
float floatValue = Some.NegativeFloat();

will generate random float value from min float to 0.

Float with range

C#
float floatValue = Some.Float(99.1f, 341.21f);

will generate float random value between 99.1f and 341.21f.

Future date and time

C#
DateTime futureDate = Some.FutureDate();

will return newer date and time when invoked.

Past date and time

C#
DateTime pastDate = Some.PastDate();

will return older date and time when invoked.

Date with range

C#
DateTime date = Some.Date(DateTime.Now, DateTime.Now.AddDays(10))

will generate date withing specified range in input parameters of invoking method.

String (only letters)

C#
string randomString = Some.String(20);

will generate string with 20 random characters.

Lowercase string (only letters)

C#
string randomString = Some.StringLower(20);

will generate 20 lowercase characters as string.

Uppercase string (only letters)

C#
string randomString = Some.StringUpper(20);

will generate 20 uppercase characters as string.

String with digits

C#
string randomString = Some.DigitsAsString(20);

will generate 20 digits as string.

Integer

C#
int randomInteger = Some.Integer();

will return random integer value.

Integer within range

C#
int randomInteger = Some.Integer(100, 456);

will return random integer value between 100 and 456;

Positive integer

C#
int positiveInteger = Some.PositiveInteger();

will return random positive integer value.

Negative integer

C#
int negativeInteger = Some.NegativeInteger();

will return random negative integer value.

Double

C#
double randomDouble = Some.Double();

will return random double value.

Double within range

C#
double randomDouble = Some.Double(1.765d, 100.091892d);

will return random double value between 1.765d and 100.091892d.

Positive double

C#
double randomDouble = Some.PositiveDouble();

will return only positive double value.

Negative double

C#
double randomDouble = Some.NegativeDouble();

will return only negative double value.

Decimal

C#
decimal randomDecimal = Some.Decimal();

will return random decimal value.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Poland Poland
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralRe: Found bug? Just let me know. Pin
Pawel Sienko6-May-16 8:21
Pawel Sienko6-May-16 8:21 
GeneralRe: Found bug? Just let me know. Pin
Philippe Mori6-May-16 9:49
Philippe Mori6-May-16 9:49 
GeneralRe: Found bug? Just let me know. Pin
Pawel Sienko6-May-16 10:01
Pawel Sienko6-May-16 10:01 
GeneralRe: Found bug? Just let me know. Pin
Philippe Mori6-May-16 10:55
Philippe Mori6-May-16 10:55 
GeneralRe: Found bug? Just let me know. Pin
Pawel Sienko6-May-16 11:03
Pawel Sienko6-May-16 11:03 
GeneralRe: Found bug? Just let me know. Pin
Philippe Mori6-May-16 11:16
Philippe Mori6-May-16 11:16 
GeneralRe: Found bug? Just let me know. Pin
Pawel Sienko6-May-16 11:22
Pawel Sienko6-May-16 11:22 
GeneralRe: Found bug? Just let me know. Pin
Philippe Mori6-May-16 13:44
Philippe Mori6-May-16 13:44 
If you look carefully the constructor that create an instance of Some is a static constructor. Essentially this is one way to implement a singleton in C#. The purpose is to have a global instance if this is what you want. A better design might use another class for the factory.

When I was talking of the other guy, I was referencing other peoples in this thread that already told you that is was a bad design to have a static class in this scenario and why.

If you don't understand why then don't justify your poor decisions. A more professional way to handle this would be to acknowledge that your code is not designed for maintainability and explain the limitations.
Philippe Mori

GeneralRe: Found bug? Just let me know. Pin
Pawel Sienko26-Apr-16 0:29
Pawel Sienko26-Apr-16 0:29 
QuestionNew version with fixed generating double values. Pin
Pawel Sienko21-Apr-16 9:56
Pawel Sienko21-Apr-16 9:56 
AnswerRe: New version with fixed generating double values. Pin
Pawel Sienko21-Apr-16 10:19
Pawel Sienko21-Apr-16 10:19 
GeneralMy vote of 2 Pin
Member 1069416820-Apr-16 19:42
Member 1069416820-Apr-16 19:42 
GeneralRe: My vote of 2 Pin
Pawel Sienko20-Apr-16 22:36
Pawel Sienko20-Apr-16 22:36 
GeneralRe: My vote of 2 Pin
Pawel Sienko20-Apr-16 23:08
Pawel Sienko20-Apr-16 23:08 
GeneralRe: My vote of 2 Pin
Member 1069416820-Apr-16 23:22
Member 1069416820-Apr-16 23:22 
GeneralRe: My vote of 2 Pin
Pawel Sienko20-Apr-16 23:24
Pawel Sienko20-Apr-16 23:24 
GeneralBuggy and not completed Pin
Dmitriy Gakh19-Apr-16 8:08
professionalDmitriy Gakh19-Apr-16 8:08 
GeneralRe: Buggy and not completed Pin
Pawel Sienko19-Apr-16 8:21
Pawel Sienko19-Apr-16 8:21 
GeneralRe: Buggy and not completed Pin
Dmitriy Gakh19-Apr-16 9:06
professionalDmitriy Gakh19-Apr-16 9:06 
GeneralRe: Buggy and not completed Pin
Pawel Sienko21-Apr-16 9:59
Pawel Sienko21-Apr-16 9:59 
GeneralConfusion Pin
Afzaal Ahmad Zeeshan19-Apr-16 6:33
professionalAfzaal Ahmad Zeeshan19-Apr-16 6:33 
GeneralRe: Confusion Pin
Pawel Sienko19-Apr-16 6:35
Pawel Sienko19-Apr-16 6:35 
GeneralMy vote of 5 Pin
Florian Rappl19-Apr-16 4:01
professionalFlorian Rappl19-Apr-16 4:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.