I’m creating a program which creates several panels with randomly determined colors which will be incremented/decremented by some random constant every 20 milliseconds or so to create a smooth, undulating color. For this, I’ve just been using the Next(int) method of the Random class. For a single instance, this works perfectly–every time I run the program, I get different colors changing at different rates. The problem comes when I try to create multiple panels–most, if not all, come out looking and behaving identically to each other, implying that all of the randomly generated numbers were identical. I’m assuming that this is a result of generating all of the pseudorandom numbers in rapid succession, causing all of them to be based on the same seed.
Is there a better way than using the Random class to generate random integers in rapid succession to ensure that they’re not identical? If there isn’t any way already built into C#, is there any straightforward way to develop a pseudorandom number generator (bearing in mind that this is my first foray into using C#)?
Do not use multiple instances of the Random Class using the default constructor. If they all are initialized within the same time slice they will all have the same seed and will all generate the same sequence of random numbers, use the constructor that you can pass in a seed and pass a different seed to each instance.
Also you only need one object per thread, use the same Random object for all of the panels if they are all on the same thread.