Заполнить массив уникальными числами - C#
Формулировка задачи:
Не понимаю, что я не так делаю Помогите пожалуйста понять, а не сделать.
int[] array = new int[10];
Random random = new Random();
array[0] = random.Next(1, 11);
Console.WriteLine(array[0]);
for (int a = 1; a < array.Length; a++)
{
array[a] = random.Next(1, 11);
while (array[a] == array[a - 1])
{
array[a] = random.Next(1, 11);
}
Console.WriteLine(array[a]);
}
Console.ReadKey();
Я понял, что после выполнения while цикл for работает дальше. А как сделать так, чтобы он проверял (сравнивал) числа до тех пор, пока не будет уникальное число. И как сделать так, чтобы он сравнивал и предыдущие числа?
Я запутался в логике. Я не понимаю, что и куда вставлять.
Вот я заполняю массив. Теперь, вроде бы, кажется, что надо всего лишь сделать проверку массива индекса а с индексом а-1, и если есть совпадение, то присвоить новое значение индексу а. Если совпадения нет, то делать следующую итерацию.
int[] array = new int[10];
Random random = new Random();
for (int a = 0; a < array.Length; a++)
{
array[a] = random.Next(1, 11);
Console.WriteLine(array[a]);
}
Console.ReadKey();
И ещё нужно сделать так, чтобы он проверял не просто а-1, а каждое число меньше, где -1 - это переменная, которая увеличивается на +1, пока не достигнет нуля.
Получилась такая конструкция, но я не понимаю, как она работает.
int[] array = new int[10];
Random random = new Random();
for (int a = 0; a < array.Length; a++)
{
for (int b = 1; b > array.Length; b++)
{
if (array[a] == array[a - b])
{
if ((a - b) >= 0)
{
}
}
}
array[a] = random.Next(1, 11);
Console.WriteLine(array[a]);
}
Console.ReadKey();Решение задачи: «Заполнить массив уникальными числами»
textual
Листинг программы
static int[] CreateRandomArray(int minValue, int length)
{
var random = new Random();
int[] array = new int[length];
for (int i = 0; i < length; ++i)
{
bool isUnique;
do
{
array[i] = random.Next(minValue, minValue + length);
isUnique = true;
for (int j = 0; j < i; ++j)
if (array[i] == array[j])
{
isUnique = false;
break;
}
} while (!isUnique);
}
return array;
}