Рандомайзер не повторяющихся значений - PascalABC.NET
Формулировка задачи:
Значения этого рандоамайзера не должны быть одинаковыми.
p.s. проблема в том, что программа виснет и не выдаёт значения
Решение задачи: «Рандомайзер не повторяющихся значений»
textual
Листинг программы
var i, randomm, randomm1, u, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15: integer; start := system.DateTime.Now; var x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16: integer; function rnd(): boolean ; begin rnd := not (randomm1 = (x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16) / 16); end; begin repeat randomm := PABCSystem.random(16) + 1; randomm1 := PABCSystem.random(16) + 1; if not (u = 16) and rnd then begin x16 := randomm1; inc(i); u := 16; end; if not (u1 = 15) and rnd then begin x15 := randomm1; inc(i); u1 := 15; end; if not (u2 = 14) and rnd then begin x14 := randomm1; inc(i); u2 := 14; end; if not (u3 = 13) and rnd then begin x13 := randomm1; inc(i); u3 := 13; end; if not (u4 = 12) and rnd then begin x12 := randomm1; inc(i); u4 := 12; end; if not (u5 = 11)and rnd then begin x11 := randomm1; inc(i); u5 := 11; end; if not (u6 = 10)and rnd then begin inc(i); x10 := randomm1; u6 := 10; end; if not (u7 = 9) and rnd then begin x9 := randomm1; inc(i); u7 := 9 end; if not (u8 = 8) and rnd then begin x8 := randomm1; inc(i); u8 := 8; end; if not (u9 = 7) and rnd then begin x7 := randomm1; inc(i); u9 := 7; end; if not (u10 = 6)and rnd then begin x6 := randomm1; inc(i); u10 := 6; end; if not (u11 = 5)and rnd then begin x5 := randomm1; inc(i); u11 := 5; end; if not (u12 = 4) and rnd then begin x4 := randomm1; inc(i); u12 := 4; end; if not (u13 = 3) and rnd then begin x3 := randomm1; inc(i); u13 := 3; end; if not (u14 = 2) and rnd then begin x2 := randomm1; inc(i); u14 := 2; end; if not (u15 = 1) and rnd then begin x1 := randomm1; inc(i); u15 := 1; end; until i = 16; end.
Объяснение кода листинга программы
В коде реализована функция генерации 16 случайных чисел без повторений в диапазоне от 1 до 16. Список переменных и их назначение:
- i - счётчик количества сгенерированных чисел
- randomm, randomm1 - генераторы случайных чисел
- u, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15 - счётчики для отслеживания использованных чисел
- x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16 - массив для хранения сгенерированных чисел Для каждого числа в массиве проверяется условие, что оно ещё не было использовано (счётчик u равен 16), после чего число присваивается соответствующему элементу массива и увеличивается счётчик i. Если же число уже было использовано (счётчик u меньше 16), то происходит аналогичная проверка для следующего числа. Цикл повторяется до тех пор, пока не будет сгенерировано 16 чисел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д