I have a simple piece of code:
public string GenerateRandomString()
{
string randomString = string.Empty;
Random r = new Rand
The default constructor for Random (the one you're using) seeds the generator with a value based on the current time. If the time in milliseconds doesn't change between the first and second call of the function, it would use the same random seed.
My suggestion is to use a static Random object and only initialize it once.