Не нужно писать рекурсивный код!
random/3
Просто используйте, length/2
и maplist/2
так:
?- length (Zs, 13), maplist (random (0,10), Zs).
Zs = [8, 9, 3, 5, 0, 7, 6, 7, 9, 9, 2, 4, 7].
?- length(Zs, 13), maplist(random(0,10), Zs).
Zs = [1, 7, 7, 6, 2, 5, 2, 9, 9, 2, 0, 7, 1].
?- length(Zs, 13), maplist(random(0,10), Zs).
Zs = [4, 6, 7, 0, 1, 3, 4, 9, 0, 8, 3, 8, 5].
?- length(Zs, 13), maplist(random(0,10), Zs).
Zs = [3, 1, 2, 1, 5, 3, 9, 8, 3, 7, 8, 1, 7].
Примечание примеси! Мы получаем разные ответы - по крайней мере, большую часть времени ...
Для воспроизводимых результатов запишите фактический prng метод и его начальное состояние, random-seed.
Я использую эту платформу ... http://pengines.swi-prolog.org/apps/swish/ – mglgiordani
@SQB Да, плохая привычка.:) Он начинается как один комментарий комментария и расширяется до ответа ... – lurker
'findall (U, (между (1, N, _), random (1,10, U)), Us)' - редкий случай, когда findall имеет смысл. – false