創建一對的靜態字符串:
String consonants = "BCDFGHJKLMNPQRSTVWXYZ";
String vowels = "AEIOU";
生成1..5(或0..4)之間的隨機數。如果數字是1(0),則從元音列表中選取一個隨機字符。否則,從輔音列表中選擇一個隨機字符。
可替換地,如果需要恰好的4:1的比例,使用一個for循環代替第一隨機數生成器的,即:
for (i = 0; i < 50; i++)
{
if (i % 5 == 0)
// select a vowel at random
else
// select a consonant at random
}
編輯:完整的解決方案。我正在將我的五十個字符寫入數組,然後將它們打印到控制檯。您可以將theChar
傳遞給您的輸出方法。
public void RandomChars()
{
Random random = new Random();
String consonants = "BCDFGHJKLMNPQRSTVWXYZ";
String vowels = "AEIOU";
StringBuilder result = new StringBuilder();
for (int i = 0; i < 50; i++)
{
char theChar;
if (i % 5 == 0)
{
theChar = vowels[random.Next(vowels.Length)];
}
else
{
theChar = consonants[random.Next(consonants.Length)];
}
result.Append(theChar);
}
Console.WriteLine(result.ToString());
}
沒有做任何特別的事情,由於有21個輔音和5個元音,這個比例將是4.2:1。 – Barmar
@SteveWellens您的技術難道不會受到某些輔音比其他輔音更多的問題的困擾嗎? 40個輔音包中有19個輔音2個副本,其他2個只有1個。 – Barmar
@Barmar [字母Y](http://en.wikipedia.org/wiki/Y)可以代表一個元音或一個元音輔音。因此,如果由於含糊不清而將其從可能的字母選擇中刪除,則該比例將是4:1 - 20個輔音和5個元音。 #Voila! –