public class CharacterGenerator
private const string DefaultCharacterSet = "-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
private readonly Random _random;
private readonly string _characterSet;
public CharacterGenerator(string characterSet = DefaultCharacterSet)
_characterSet = characterSet;
_random = new Random((int)DateTime.UtcNow.Ticks);
public string Generate(int size = 50)
var sb = new StringBuilder();
var charSetSize = _characterSet.Length;
for(var n = size; n > 0; n--)
var i = _random.Next(0, size) % charSetSize;
sb.Append(_characterSet[i]);
public static void Main()
var generator = new CharacterGenerator();
Console.WriteLine(generator.Generate());
Console.WriteLine(generator.Generate(20));
Console.WriteLine(generator.Generate(100));