View difference between Paste ID: Kz1uT17D and dHEXRMiq
SHOW: | | - or go back to the newest paste.
1
const
2
  n = 100; // размер массива
3
4
var
5
  m, base: array [0..n] of integer;
6
  i, t, k, nom: Byte; // переменные не будут принимать больши значения, поэтому хватит и Byte
7
  {
8
  m - массив, в который будут заноситься значения
9
  base - массив значений, из которого будут братся значения для массива m
10
11
  i - счётчик для цикла
12
  t - переменная для обмена значениями двух переменных
13
  k - кол-во нераспределенных элементов базы (массив base)
14
  nom - номер элемента массива, назначающийся случайно
15
  }
16
17
begin
18
randomize; // отключаем одинаковый рандом
19
k := n; // кол-во оставшихся элементов в базе изначально равно размеру массива m
20
21
for i := 0 to n do // цикл от первого элемента массива до последнего
22
  base[i] := i; // инициализируем базу
23
24
for i := 0 to n do // цикл от первого элемента массива до последнего
25
  begin // начало цикла
26
  nom := random(k); // генерируем номер элемента, который будем брать с базы
27
  m[i] := base[nom]; // записываем значение выбранного элемента в наш массив
28
29
  t := base[nom]; // записываем значение выбранного элемента во временную переменную
30
  base[nom] := base[k]; // заменяем значение выбранного элемента на значение последнего неиспользованного элемента в базе
31
  base[k] := t; // из временной переменной записываем значение в последний элемент базы
32
33
  dec(k); // уменьшаем кол-во неиспользованных элементов базы на 1
34
  end; // конец цикла
35
36
// Вывод на экран полученного массива
37
for i := 0 to n do
38
  writeln(m[i]); // вывод элемента массива
39
readln; // ждём нажатия любой клавиши для закрытия программы, чтобы успеть посмотреть на результат программы
40
end.