プログラムが正常に動作しているように見えますが、最終的なアレイの開発と表示に時間がかかります。 1から45までの45個の要素を持つ必要がありますが、重複のないランダムな順序で生成されます。c#配列タイムアウトエラー
using System;
namespace RandomArray
{
public class RandomArrayNoDuplicates
{
static Random rng = new Random();
static int size = 45;
static void Main()
{
int [] array = InitializeArrayWithNoDuplicates(size);
DisplayArray(array);
Console.ReadLine();
}
/// <summary>
/// Creates an array with each element a unique integer
/// between 1 and 45 inclusively.
/// </summary>
/// <param name="size"> length of the returned array < 45
/// </param>
/// <returns>an array of length "size" and each element is
/// a unique integer between 1 and 45 inclusive </returns>
public static int[] InitializeArrayWithNoDuplicates(int size)
{
int[] arr = new int[size];
for (int i = 0; i < size; i++)
{
int number = rng.Next(1, size + 1);
arr[i] = number;
if (i > 0)
{
for (int j = 0; j <= i; j++)
{
if (arr[j] == arr[i])
{
i = i - 1;
}
else if (arr[i] != arr[j])
{
arr[i] = number;
}
}
}
}
return arr;
}
public static void DisplayArray(int[] arr)
{
for (int x = 0; x < size; x++)
{
Console.WriteLine(arr[x]);
}
}
}
}
配列内の各要素が生成された後で重複をチェックするには、要素をチェックする必要があります。これにアプローチするためのヒント
数字が1〜45の配列から始めてスクランブルしてみませんか? –
各番号をランダムに生成し、それを配列に追加する必要があります。 – PotatoFries
@PotatoFries - なぜそれを言うのですか?それは 'サマリー'には言わない。 – Enigmativity