DotNetRandomNameGenerator
DotNetRandomNameGenerator copied to clipboard
random bug
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();
}
}