My answer from here:
Just reiterating the right solution:
namespace mySpace { public static class Util { private static Random rnd = new Random(); public static int GetRandom() { return rnd.Next(); } } } So you can call:
var i = Util.GetRandom(); all throughout.
If you strictly need a true stateless static method to generate random numbers, you can rely on a Guid.
public static class Util { public static int GetRandom() { return Guid.NewGuid().GetHashCode(); } } It's going to be a wee bit slower, but can be much more random than Random.Next, at least from my experience.
But not:
new Random(Guid.NewGuid().GetHashCode()).Next(); The unnecessary object creation is going to make it slower especially under a loop.
And never:
new Random().Next(); Not only it's slower (inside a loop), its randomness is... well not really good according to me..