Не работает генерация рандомного числа - PascalABC.NET
Формулировка задачи:
Каждый раз программа дает 7, счетчик К работает правильно, а вот строка r:=random(1,k); дает всегда один и тот же результат. r:=random(k)+1; (что идентично по действию) дает такой же результат.
Что не так?
Решение задачи: «Не работает генерация рандомного числа»
textual
Листинг программы
Program test; function randomset(s: set of integer): integer; var num, k, i, r: integer; res: array[1..5] of integer; begin k := 0; foreach num in s do begin inc(k); res[k] := num; end; r:=random(1,k); result := res[r]; end; var s: set of integer; begin randomize; s+=[1,3,7,9,5]; write(randomset(s)); end.
Объяснение кода листинга программы
- Объявлены функции
randomset
иmain
, а также переменныеnum
,k
,i
,r
,res
. - В функции
randomset
перебираются все числа из множестваs
с помощью циклаforeach
. - Каждое число из множества
s
добавляется в массивres
с индексомk
. - Переменная
k
инициализируется нулем. - В функции
main
вызывается функцияrandomize
для инициализации генератора случайных чисел. - Множество
s
заполняется числами[1,3,7,9,5]
. - Функция
randomset
вызывается с аргументомs
, результат выводится на экран. - В функции
randomset
переменнаяr
инициализируется случайным числом в диапазоне от 1 доk
. - Результатом работы функции
randomset
является элемент массиваres
с индексомr
. - Цикл
foreach
завершается, когда все элементы множестваs
будут добавлены в массивres
. - Значение переменной
k
не используется в коде. - Множество
s
не изменяется внутри функцииrandomset
. - Функция
randomset
не возвращает случайное число, а возвращает одно из чисел, добавленных в массивres
. - Функция
randomize
используется для инициализации генератора случайных чисел. - Значение переменной
r
не используется в функцииmain
. - Переменная
i
не используется в функцииrandomset
. - Переменная
num
не используется в функцииrandomset
. - Переменная
k
не используется в функцииmain
. - Переменная
i
не используется в функцииmain
. - Переменная
num
не используется в функцииmain
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д