Заполнить массив случайными числами без повторений - PascalABC.NET
Формулировка задачи:
Написал процедуру для заполнения массива случайными числами без повторений. Алгоритм, вероятно, далеко не самый оптимальный, но тем не менее, рабочий. В теле программы работает, а, вот, в процедуре, ниочинь: "PABCSystem.pas(1961) : Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32."
Листинг программы
- Const
- n = 100;
- Var
- a: Array of Int64;
- 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;
- Begin
- Milliseconds;
- FillByRandomNumbersWithoutRepeats(a, 1, n);
- Writeln(MillisecondsDelta / 1000, ' сек.');
- End.
Решение задачи: «Заполнить массив случайными числами без повторений»
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
будет заполнен случайными числами без повторений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д