パート 1: 私が達成したいのは、数字 1、2、3 ... 8、9、10 をランダムな順序でコンソール ウィンドウに書き込むことだけです。したがって、すべての数値をコンソール ウィンドウに書き込む必要がありますが、それらの順序はランダムでなければなりません。
パート 2: 私の実際のプロジェクトでは、配列内のすべての要素をランダムな順序でコンソール ウィンドウに書き込む予定です。パート 1 の答えが得られれば、これを配列で簡単に実装できると思います。
パート 1: 私が達成したいのは、数字 1、2、3 ... 8、9、10 をランダムな順序でコンソール ウィンドウに書き込むことだけです。したがって、すべての数値をコンソール ウィンドウに書き込む必要がありますが、それらの順序はランダムでなければなりません。
パート 2: 私の実際のプロジェクトでは、配列内のすべての要素をランダムな順序でコンソール ウィンドウに書き込む予定です。パート 1 の答えが得られれば、これを配列で簡単に実装できると思います。
/// <summary>
/// Returns all numbers, between min and max inclusive, once in a random sequence.
/// </summary>
IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
{
List<int> candidates = new List<int>();
for (int i = minInclusive; i <= maxInclusive; i++)
{
candidates.Add(i);
}
Random rnd = new Random();
while (candidates.Count > 0)
{
int index = rnd.Next(candidates.Count);
yield return candidates[index];
candidates.RemoveAt(index);
}
}
あなたのプログラムで
Console.WriteLine("All numbers between 0 and 10 in random order:");
foreach (int i in UniqueRandom(0, 10)) {
Console.WriteLine(i);
}
int[] ints = new int[11];
Random rand = new Random();
Random は .NET に組み込まれているクラスで、ランダムな整数を非常に簡単に作成できます。基本的には、rand オブジェクト内でメソッドを呼び出してその乱数を取得するだけです。これは素晴らしいことです。したがって、ループ内では、各要素をそのメソッドの結果に設定するだけです。
for (int i = 0; i < ints.Length; i++)
{
ints[i] = rand.Next(11);
}
基本的に、配列全体に 0 から 10 までの乱数を入力します。この時点で、ユーザーに内容を表示するだけで済みます。これは foreach ループで実行できます。
foreach (int i in ints)
{
Console.WriteLine(i.ToString());
}