DotNetRandomNameGenerator icon indicating copy to clipboard operation
DotNetRandomNameGenerator copied to clipboard

random bug

Open AtlantisDe opened this issue 3 years ago • 0 comments

Demo Code

var items = new List<string>();
for (int i = 0; i < 20; i++)
{
    var personGenerator = new RandomNameGeneratorLibrary.PersonNameGenerator();
    //System.Threading.Thread.Sleep(5);
    var firstName = personGenerator.GenerateRandomFirstName();
    var lastName = personGenerator.GenerateRandomLastName();

    items.Add($"{firstName} {lastName}");
}

// get the same data
var str = String.Join("\r\n", items);

Here is the solution

 // You should use it to avoid the problem

public static class RandomGen3
{
    private static RNGCryptoServiceProvider _global =
        new RNGCryptoServiceProvider();
    [ThreadStatic]
    private static Random _local;

    public static int Next()
    {
        Random inst = _local;
        if (inst == null)
        {
            byte[] buffer = new byte[4];
            _global.GetBytes(buffer);
            _local = inst = new Random(
                BitConverter.ToInt32(buffer, 0));
        }
        return inst.Next();
    }
}

AtlantisDe avatar Jun 08 '22 18:06 AtlantisDe