Перед нами стоит задача заполнить массив случайными числами, так что бы все числа не имели повторения, да еще числа должны быть определённого диапазона. Пример дан массив с размерностью 10, диапазоном чисел 100, необходимо сгенерировать массив таким образом что бы они не повторялись.
Разобьем задачу на части, а именно надо определить для начала какая размерность массива должна быть, об этом предлагаю спросить пользователя.
1 2 |
Console.WriteLine("Введите размерность массива"); int[] arr =new int[int.Parse(Console.ReadLine())]; |
Следующим шагом нужно запросить диапазон, да еще так что он был выше размерности массива иначе, мы не сможем создать уникальные числа в нем, а программа попросту зациклится, и выскочит ошибка.
Итоговой код решения можно видеть ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
class Program { static void Main(string[] args) { Console.WriteLine("Введите размерность массива"); int[] arr =new int[int.Parse(Console.ReadLine())]; Console.WriteLine("Введите минимальное число диапазона чисел"); int min = int.Parse(Console.ReadLine()); Console.WriteLine("Введите максимальное число диапазона чисел"); int max = int.Parse(Console.ReadLine()); if ((max - min)< arr.Length) { Console.WriteLine("Диапазон чисел меньше чем, размерность массива"); return; } GetRandomArr(ref arr,min,max); Console.WriteLine(String.Join(" ", arr)); Console.ReadKey(); } public static void GetRandomArr(ref int[] arr, int min, int max) { Random random = new Random(); for (int i = 0; i < arr.Length; i++) { var num = random.Next(min, max); if (arr.Contains(num)) { i--; } else { arr[i] = num; } } } } |
Вывод программы:
1 2 3 4 5 6 7 8 9 |
Введите размерность массива 10 Введите минимальное число диапазона чисел 0 Введите максимальное число диапазона чисел 20 16 19 5 7 12 15 18 1 11 9 |