Заполнить массив уникальными числами - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д