Seed is in milliseconds ranging from 10 milliseconds to 16 milliseconds. But the most important thing to remember is that you should always use the same instance of Random if you can generate different "random" values. If you always create a new instance in a narrow loop, you get the same value many times.
So it's safe to use the default constructor if you use the same instance anyway. If you do not need them in different streams, you can use this helper class from Jon Skeet (from here ):
public static class RandomHelper { private static int seedCounter = new Random().Next(); [ThreadStatic] private static Random rng; public static Random Instance { get { if (rng == null) { int seed = Interlocked.Increment(ref seedCounter); rng = new Random(seed); } return rng; } } }
source share