Список случайных чисел на Visual Prolog

      Комментарии к записи Список случайных чисел на Visual Prolog отключены

Помечено: , ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 1 месяц, 3 нед. назад.

  • Автор
    Сообщения
  • #3353

    Нужно средствами Visual Prolog создать список случайных чисел, находящихся в заданном диапазоне. Пусть, например, в диапазоне [-100, 100].

    Решение:

    DOMAINS
    	list = integer*
    PREDICATES							
    	randList(integer, list)
    CLAUSES
        	randList(0, []):-!.
        	randList(Size, [Head|Tail]):-
        		Size > 0,
          		NextSize = Size - 1, random(200, Rn), !,
          		Head = Rn - 100,
          		randList(NextSize, Tail).	
    GOAL
      	write("N :"), readint(N),
      	randList(N, List).

    random-list_visual-prolog

    Тут используется встроенная функция random, выдающая целое число в диапазоне [0, N], где N задается пользователем. Чтобы получить числа в диапазоне [-100, 100] мы генерируем числа в диапазоне [0, 200] и от каждого отнимаем 100.

    При N равном нулю функция возвращает пустой список. В противном случае генерируется одно случайное число и рекурсивно выполняется генерация остальных Size-1 чисел. Обратите внимание на сравнение Size с нулем — она необходима для того, чтобы при некорректном значении длины списка функция вернула false, а не зациклилась.

Для ответа в этой теме необходимо авторизоваться.