このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1363522503/91
#  Youtubeみたいなランダムでユニークなn文字数の文字列を作る方法を教えてください 

選択可能文字リスト(
 ['0','1','2','3','4','5','6','7','8','9',
 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]).

'Youtubeみたいなランダムでユニークなn文字数の文字列を作る'(_n,_ランダムでユニークなn文字数の文字列) :-
        length(Ln,_n),
        選択可能文字リスト(_選択可能文字リスト),
        ランダムでユニークなn要素の文字リストを作る(Ln,_選択可能文字リスト,_ランダムでユニークなn文字数の文字リスト),
        atom_chars(_ランダムでユニークなn文字数の文字列,_ランダムでユニークなn文字数の文字リスト).

ランダムでユニークなn要素の文字リストを作る([],_,[]).
ランダムでユニークなn要素の文字リストを作る([_|Ln],_選択可能文字リスト,[_選択値|R]) :-
        リストからランダムに値を抜き取る(_選択可能文字リスト,_選択値,_選択値を抜き取った選択可能文字リスト),
        ランダムでユニークなn要素の文字リストを作る(Ln,_選択値を抜き取った選択可能文字リスト,R).

リストからランダムに値を抜き取る(_リスト,_値,_値を抜き取ったリスト) :-
        乱数値をリストの抜き取り位置とする(_リスト,_乱数値,_乱数値を要素数とした変数リスト),
        リストから値を抜き取る(_リスト,_乱数値を要素数とした変数リスト,_値,_値を抜き取ったリスト).

乱数値をリストの抜き取り位置とする(_リスト,_乱数値,_乱数値を要素数とした変数リスト) :-
        length(_リスト,_要素数),
        _乱数値 is random(_要素数),
        length(_乱数値を要素数とした変数リスト,_乱数値).

リストから値を抜き取る(_リスト,_乱数値を要素数とした変数リスト,_値,_値を抜き取ったリスト) :-
        append(_乱数値を要素数とした変数リスト,[_値|_残りリスト],_リスト),
        append(_乱数値を要素数とした変数リスト,_残りリスト,_値を抜き取ったリスト).