2

プログラミング初心者なのでよろしくお願いします!

配列の一部をランダムな値に設定しようとしていますが、プログラムを実行すると、配列のすべての部分が同じ値に設定されます。私はそれらすべてが異なっていることを望みます。

これが私のコードです:

int[] hello_array = new int[10];
        Console.WriteLine("Here");

        Random rndm = new Random();

        for (int j = 0; j < hello_array.Length; j++)
        {
            hello_array[j] = rndm.Next(99);
        }

        Console.WriteLine("Now Here");

        for (int i = 0; i < hello_array.Length; i++)
        {
            Console.WriteLine("hahahaha look at this " + hello_array[0]);

私はおそらくそれを完全に見逃していますが、コードの何が問題なのかわかりません! 配列の10個の部分すべてが異なる乱数を生成するようにする方法を教えてください。

4

2 に答える 2

9

これを変える:

 Console.WriteLine("hahahaha look at this " + hello_array[0]);

これに:

 Console.WriteLine("hahahaha look at this " + hello_array[i]);

すべてのループで配列内の同じ要素を出力していました。

于 2012-10-30T20:28:59.573 に答える
1

同じ行数で、新しい C# 機能のいくつかを使用して同じ結果を得ることができます (ただし、複雑な詳細はすべて省略します)。

ラムダ式(たとえば、) と生成する要素の数の2 つのパラメーターを取る汎用メソッドを定義します。メソッド内では、キーワードを使用して、ファクトリによって生成された新しい要素を返します。() => random.Next(99)yield

Random random = new Random();
foreach (var element in Generate(() => random.Next(99), 10))
{
    Console.WriteLine(element);
}

public static IEnumerable<T> Generate<T>(Func<T> factory, int elements)
{
    for (int generated = 0; generated < elements; generated++)
    {
        yield return factory();
    }
}
于 2012-10-30T20:50:25.037 に答える