Ответ в теме: Заполнить список случайными числами на Prolog

      Комментарии к записи Ответ в теме: Заполнить список случайными числами на Prolog отключены
#1984

Функция rand_list принимает длину и возвращает список случайных чисел:

randList(Size, _List):-
Size < 0, !, fail.
randList(0, []):-!.
randList(Size, [Head|Tail]):-
NextSize is Size - 1, random(Head), !,
randList(NextSize, Tail).

Если значение длины меньше нуля, то решить задачу не возможно, поэтому функция завершается неудачей, т.е. выполняет отсечение, которое запрещает поиск других решений, а затем fail, указывающий что решения нет.
Если длина равна нулю — функция возвращает пустой список. В противном случае — вычисляет случайное значение первого элемента списка, а остальные получает рекурсивно, уменьшив длину списка на единицу.
Для генерации случайный чисел можно использовать встроенную функцию random. В ряде реализаций Prolog такая функция отсутствует, а в остальных ее поведение может отличаться. В Turbo Prolog и SWI Prolog она вернет число в диапазоне от 0 до 1.

Генерация случайных чисел часто удобна при отладке программы, однако результаты будут меняться с каждым запуском. Возможна ситуация, когда при некотором значении вы получите ошибку, поправите ее и заходите проверить не повторится ли она снова, но если на вход подаются случайные числа — то повторить эксперимент не получится. В этом случае можно использовать генератор псевдослучайных чисел, которому можно установить затравку (первый элемент, из которого сгенерируются все остальные). Чтобы повторить эксперимент — достаточно ввести такое же значение затравки.