Заполнить массив уникальными числами - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы