3

50個のランダムな文字をコンソールに分散させるコードを作成する必要があります(これは「スネーク」ゲームです)。その部分、私は問題がありませんでした。私はこのコードを使用して文字を生成しました(問題を修正する方法を知ったら、私が扱っている「コンソールの周りにそれらを分散させる」部分)

        Random rand = new Random();
        int number = rand.Next(0, 26);
        char letter = (char)('a' + number);

ランダムな文字は問題なく生成されますが、問題の説明では、子音と母音の比率を4:1にする必要があり、その部分をどのように実現するかがわかりません。

4

1 に答える 1

6

静的文字列のペアを作成します。

  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
}

編集:完全なソリューション。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());
    }
于 2012-10-23T04:32:49.640 に答える