To generate random numbers in C#, it is possible to use the class RandomNumberGenerator in System.Security.Cryptography namespace in .NET.
This class can be easier to use with a simple wrapper class. The wrapper class provided here returns either an integer or an unsigned integer. The
"randomness" is better in this class than in the default Random generator of .NET, the Random class. This class will for example emit
the same random values for two instances instantiated at almost the same time of the Random class.
The wrapper class looks like this:
public static class RandomGenerator
{
private static readonly RandomNumberGenerator generator;
static RandomGenerator()
{
generator = RandomNumberGenerator.Create();
}
public static int GetNext()
{
byte[] rndArray = new byte[4];
generator.GetBytes(rndArray);
return BitConverter.ToInt32(rndArray, 0);
}
public static uint GetNextUnsigned()
{
byte[] rndArray = new byte[4];
generator.GetBytes(rndArray);
return BitConverter.ToUInt32(rndArray, 0);
}
}
The class is in fact a static class with a static RandomNumberGenerator instance created in the static constructor. The methods to create a new
random number uses the GetBytes method to fill a four byte array. We could of course generate longer arrays and create for example 64-bits integers,
but here just a four byte array is used. Either an integer or unsigned integer is returned by the two respective methods for this. I have not bothered
to refactor this simple class. The BitConverter class converts the byte array to int or unsigned int (32-bits) starting at index 0. We could also return
other datatypes here than just integers.
Simple unit test:
[TestFixture]
public class UnitTest1
{
[Test]
public void GetNextInteger()
{
int random = RandomGenerator.GetNext();
Debug.WriteLine(random);
}
[Test]
public void GetNextUInteger()
{
uint random = RandomGenerator.GetNextUnsigned();
Debug.WriteLine(random);
}
}
Sample output:
------ Test started: Assembly: TestRandomNumberGeneratorTest.dll ------
-1821995826
1013025195
2 passed, 0 failed, 0 skipped, took 0,42 seconds (NUnit 2.6.2).
If you would like random numbers in a specified range, for example 0 to 99, you could take the integer and do a modulo 100 operation, e.g
RandomGenerator.GetNextUnsigned() % 100. Of course, this is tied to the desired range you want. If a range between for example -20 and 20 is desired,
you could for example do something like: -20 + (RandomGenerator.GetNextUnsigned() % 41).
The bottom line is that you should not entrust the randomness of System.Random class but use the RandomNumberGenerator class in System.Security.Cryptography if you want to generate random integers, signed or unsigned that exhibit more distributed randomness than the pseudorandomness of System.Random.
Share this article on LinkedIn.
Are you looking to make cash from your traffic by using popunder advertisments?
ReplyDeleteIn case you are, did you take a look at PropellerAds?
greate article what a problem with guid ?
ReplyDeleteWell Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.
ReplyDeletepython course in pune
python course in chennai
python Training in Bangalore
It seems you are so busy in last month. The detail you shared about your work and it is really impressive that's why i am waiting for your post because i get the new ideas over here and you really write so well.
ReplyDeleteData Science Training in Chennai
Data Science training in kalyan nagar
Data science training in Bangalore
Data Science training in marathahalli
Data Science interview questions and answers
Data science training in jaya nagar
I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing.. Believe me I did wrote an post about tutorials for beginners with reference of your blog.
ReplyDeleteData Science Training in Indira nagar
Data Science Training in btm layout
Python Training in Kalyan nagar
Data Science training in Indira nagar
Data Science Training in Marathahalli
Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
ReplyDeleterpa training in bangalore
best rpa training in bangalore
rpa training in pune | rpa course in bangalore
rpa training in chennai
Attend The Python Training in Bangalore From ExcelR. Practical Python Training in Bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python Training in Bangalore.
ReplyDeleteI am looking for and I love to post a comment that "The content of your post is awesome" Great work!
ReplyDeletedata analytics course
The blog is beautiful. concepts are easily clarify the queries for the beginners.
ReplyDeleteData Science Training Course In Chennai | Data Science Training Course In Anna Nagar | Data Science Training Course In OMR | Data Science Training Course In Porur | Data Science Training Course In Tambaram | Data Science Training Course In Velachery
Writing with style and getting good compliments on the article is quite hard, to be honest.But you've done it so calmly and with so cool feeling and you've nailed the job. This article is possessed with style and I am giving good compliment. Best!
ReplyDeleteaws online training in hyderabad
Enroll in the Best Data Science program in Chennai and become a successful Data Scientist.business analytics course in ranchi
ReplyDeleteI recommend everyone to read this blog as it has some of the best data science content you will find. The best part is that the writer presented the information in an engaging and engaging way. Each line gives you something new to learn, and that says a lot about the quality of the information presented here.
ReplyDeleteKickstart your career by enrolling in this Data Science Certification Course in Chennai
Amazing write-up always finds something interesting. python classes in pune aws classes in pune
ReplyDeleteThe examples and case studies shared in this post effectively demonstrate the impact of data analytics in various domains.data analytics course in chennai
ReplyDeleteThanks for sharing valuable information, keep more posting. best java training institute in pune
ReplyDeletebest java classes in pune