I'm using this C# function to generate random coupons for a system. How can I improve it?public static string GenerateCoupon(int length){    string result = string.Empty;    Random random = new Random((int)DateTime.Now.Ticks);    List<string> characters = new List<string>() { };    for (int i = 48; i < 58; i++)    {        characters.Add(((char)i).ToString());    }    for (int i = 65; i < 91; i++)    {        characters.Add(((char)i).ToString());    }    for (int i = 97; i < 123; i++)    {        characters.Add(((char)i).ToString());    }    for (int i = 0; i < length; i++)    {        result += characters[random.Next(0, characters.Count)];        Thread.Sleep(1);    }    return result;}Business requirements are:The length of coupons are not fixed and staticCoupons can contain A-Z, a-z and 0-9 (case sensitive alphanumeric)  Coupons should be unique (which means that we store them as key in a table in database, and for each coupon, we check its uniqueness)
Random string generation
c#;strings;random