すみません。一ヶ所まちがえた。
>>215
% SWI-Prolog 仕様

shuffle(_元のカードの束,_切られたカードの束) :-
    length(_元のカードの束,_カードの枚数),
    length(Ln,100),
    shuffle(Ln,_カードの枚数,_元のカードの束,_切られたカードの束).

shuffle([],_,_カードの束,_カードの束) :- !.
shuffle([_|Ln],_カードの枚数,_カードの束1,_カードの束) :-
    _乱数値 is random(_カードの枚数),
    length(L0,_乱数値),
    append(L0,L1,_カードの束1),
    append(L1,L0,_カードの束2),
    shuffle(Ln,_カードの枚数,_カードの束2,_カードの束).