具有指定比例辅音的C#随机字母发生器:元音

Chr*_*s B 3 c# string random console

我需要创建代码将50个随机字母分散到控制台中(这是一个"蛇"游戏); 那部分,我没有问题.我使用这段代码来生成字母(一旦我知道如何解决问题,我将"处理它们分散在控制台周围"部分)

        Random rand = new Random();
        int number = rand.Next(0, 26);
        char letter = (char)('a' + number);
Run Code Online (Sandbox Code Playgroud)

它生成随机字母就好了,但对于这个问题的说明指定辅音元音的比例必须是4:1,和我不知道如何使这部分发生.

Bob*_*man 6

创建一对静态字符串:

  String consonants = "BCDFGHJKLMNPQRSTVWXYZ";

  String vowels = "AEIOU";
Run Code Online (Sandbox Code Playgroud)

生成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
}
Run Code Online (Sandbox Code Playgroud)

编辑:完整的解决方案.我正在将50个字符写入数组,然后将它们打印到控制台.您可以传递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());
    }
Run Code Online (Sandbox Code Playgroud)