Click here to Skip to main content
15,885,216 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.4K   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

 
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 PinPopular
Dmitriy Gakh19-Apr-16 8:08
professionalDmitriy Gakh19-Apr-16 8:08 
The idea is nice, but should be written as a tip/trick, not as an article.

1 - This is practically unhelpful due to bugs and it is not correct from mathematical point of view. For example can Some.NegativeFloat() return 0 ? Is 0 a negative number ?

2 - It is not a lightweight library because the code is not optimized. The sources are small, but it is not a lightweight - it is not-completeness, .

And I do not understand purpose of creating of the article. Is it just a small how to ? It does not show practical use, nor example for beginners.

So, I will not vote this article untill you fix all bugs and optimize the code.
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.