Заполнить массив случайными числами без повторений - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Написал процедуру для заполнения массива случайными числами без повторений. Алгоритм, вероятно, далеко не самый оптимальный, но тем не менее, рабочий. В теле программы работает, а, вот, в процедуре, ниочинь: "PABCSystem.pas(1961) : Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32."
Листинг программы
  1. Const
  2. n = 100;
  3. Var
  4. a: Array of Int64;
  5. Procedure FillByRandomNumbersWithoutRepeats(Var a: Array of Int64; b, c: Int64);
  6. Var
  7. i, j: Int64;
  8. nums := [b..c];
  9. Begin
  10. SetLength(a, Abs(c - b) + 1);
  11. For i := Low(a) to High(a) do
  12. Begin
  13. While not (j in nums) do j := Random(b, c);
  14. a[i] := j;
  15. Exclude(nums, j);
  16. End;
  17. End;
  18. Begin
  19. Milliseconds;
  20. FillByRandomNumbersWithoutRepeats(a, 1, n);
  21. Writeln(MillisecondsDelta / 1000, ' сек.');
  22. End.

Решение задачи: «Заполнить массив случайными числами без повторений»

textual
Листинг программы
  1. Procedure FillByRandomNumbersWithoutRepeats(Var a: Array of Int64; b, c: Int64);
  2. Var
  3.   i, j: Int64;
  4.   nums := [b..c];
  5. Begin
  6. (*  SetLength(a, Abs(c - b) + 1);
  7.     For i := Low(a) to High(a) do
  8.       Begin
  9.           While not (j in nums) do j := Random(b, c);
  10.         a[i] := j;
  11.         Exclude(nums, j);
  12.       End;*)
  13. End;

Объяснение кода листинга программы

  1. В этой процедуре заполняется массив случайными числами без повторений.
  2. Передаются три аргумента: — a — массив, который необходимо заполнить; — b — минимальное значение для генерации случайных чисел; — c — максимальное значение для генерации случайных чисел.
  3. Создается три переменные: — i — индекс элемента массива; — j — временная переменная для хранения сгенерированного числа; — nums — список чисел, которые уже были сгенерированы.
  4. Устанавливается длина массива a равной разности c и b + 1.
  5. В цикле по всем индексам массива a выполняются следующие действия: — В цикле до тех пор, пока не будет найдено случайное число, которое еще не было добавлено в массив a. — Сгенерированное случайное число добавляется в массив a. — Из списка nums исключается сгенерированное число.
  6. В конце процедуры массив a будет заполнен случайными числами без повторений.

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы