I'm quite new to C# and I made this method to create random words and it takes in a minimum length and maximum as a parameter. But when I put it in a for loop 20 times I can see that every few in a row are identical. How do I fix this?
static string makename(int min, int max)
{
Random rnd = new Random();
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
char[] consonants = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' };
int namelength = rnd.Next(min, max);
char twoago = '2';
char oneago = '1';
string name = "";
for (int i = 0; i < namelength; i++)
{
if (oneago != twoago)
{
twoago = oneago;
if (rnd.Next(0, 2) == 1)
{
name = name + vowels[rnd.Next(0, vowels.Count())];
oneago = 'v';
}
else
{
name = name + consonants[rnd.Next(0, consonants.Count())];
oneago = 'c';
}
}
else if (oneago == 'c')
{
name = name + vowels[rnd.Next(0, vowels.Count())];
oneago = 'v';
}
else
{
name = name + consonants[rnd.Next(0, consonants.Count())];
oneago = 'c';
}
if (i == 0)
{
name = name.ToUpper();
}
}
return name;
}
Here is an example of the output (parameters are 4,10) (there was one output before this I cut off):console