Wednesday, 6 April 2016

random - How to randomize seed in C#




I need to generate random int in C#. I am using clock time to set the seend. However, as the rnd.Next() function may take less than a millisecond, this does not work if one has to generate a list of ints.



        for( int i=0; i<5; i++) {
int max_val = 10; // max value
var rnd = new Random(DateTime.Now.Millisecond);
int randind = rnd.Next(0, max_val);
Console.WriteLine(randind);
}



Output:
1
5
5
5
5



How can one randomise the seed in a clean way without adding an ugly sleep?


Answer



Create your Randomobject outside the loop and don't provide the seed parameter -- one will be picked for you. By taking it out of the loop, rnd.Next() will give you a random sequence anyway.




   var rnd = new Random();     
for( int i=0; i<5; i++) {
int max_val = 10; // max value
int randind = rnd.Next(0, max_val);
Console.WriteLine(randind);
}

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...