In order to ensure different random numbers, you should use just one instance of a Random class, as suggested in the answers here, here and here.
In my library, I need the random numbers, so I created a class Randomizer, which provides methods, that returns random numbers using single Random instance. Here is a fragment of the Randomizer code:
class Randomizer
{
private Randomizer() { }
public static Randomizer Instance { get; } = new Randomizer();
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
public int Next(int minValue, int maxValue)
{
lock(syncLock)
{
return random.Next(minValue, maxValue);
}
}
// rest of code
}
Now, what if a user of my library also need the random numbers? Should I make my Randomizer class public and specify in the documentation of the library, that users should use my Randomizer class in order to generate random numbers?