I'm learning C# and created a class within my program that holds a random number generator:
class RandomNumberGenerator
{
Random RNG = new Random();
// A bunch of methods that use random numbers are in here
}
Inside this class are a few methods that use the RNG. Data gets sent here from other parts of the program, gets processed, then gets returned. One of the methods does the following:
// Method works something like this
int Value1 = RNG.Next(x, y);
int Value2 = RNG.Next(x, y);
int Value3 = RNG.Next(x, y);
The x
, y
values are to be sent here from another class. So, I have to create an instance of the RandomNumberGenerator
within that class so I can call its methods and pass the x and y values to it.
class DoStuff
{
RandomNumberGenerator Randomizer = new RandomNumberGenerator
// Here I call a bunch of Randomizer methods that give me values I need
}
The problem in the above method is that I get the same numbers every time for all three values. I'm not sure if it's because they're so close together and Randomizer
's seed value hasn't had time to change or if I'm doing something wrong when I create a new instance of the RandomNumberGenerator
class.
I've gone through a bunch of answers on here already and typically problems like this are due to people creating many new Random
objects when they run methods (thus setting the seed for all of them to the same value), but the only new Random
object I create is within the RandomNumberGenerator
class. I then instantiate that once within the other class so I can pass it data and use its methods.
Why is this happening and how would I fix this?