I think GUID and Regex could make this much easier and reliable...
Do try the following code which creates a random different string of 20 length each time.
Guid guid = Guid.NewGuid();
string id = guid.ToString().Substring(0, 20);
Regex R1 = new Regex(id);
id = Regex.Replace(id, @"\s|\-|'", "");
Response.Write(id);
Hope that will help to.... :)