Заполнить массив случайными числами без повторений - PascalABC.NET
Формулировка задачи:
Написал процедуру для заполнения массива случайными числами без повторений. Алгоритм, вероятно, далеко не самый оптимальный, но тем не менее, рабочий. В теле программы работает, а, вот, в процедуре, ниочинь: "PABCSystem.pas(1961) : Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32."
Решение задачи: «Заполнить массив случайными числами без повторений»
textual
Листинг программы
Procedure FillByRandomNumbersWithoutRepeats(Var a: Array of Int64; b, c: Int64); Var i, j: Int64; nums := [b..c]; Begin (* SetLength(a, Abs(c - b) + 1); For i := Low(a) to High(a) do Begin While not (j in nums) do j := Random(b, c); a[i] := j; Exclude(nums, j); End;*) End;
Объяснение кода листинга программы
- В этой процедуре заполняется массив случайными числами без повторений.
- Передаются три аргумента:
—
a
— массив, который необходимо заполнить; —b
— минимальное значение для генерации случайных чисел; —c
— максимальное значение для генерации случайных чисел. - Создается три переменные:
—
i
— индекс элемента массива; —j
— временная переменная для хранения сгенерированного числа; —nums
— список чисел, которые уже были сгенерированы. - Устанавливается длина массива
a
равной разностиc
иb
+ 1. - В цикле по всем индексам массива
a
выполняются следующие действия: — В цикле до тех пор, пока не будет найдено случайное число, которое еще не было добавлено в массивa
. — Сгенерированное случайное число добавляется в массивa
. — Из спискаnums
исключается сгенерированное число. - В конце процедуры массив
a
будет заполнен случайными числами без повторений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д