このディレクトリの索引
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文字数の文字列) :-
        findall(_ランダムでユニークな文字,~(
                    ランダムでユニークな文字(_n,_ランダムでユニークな文字)),
                _ランダムでユニークなn文字数の文字リスト).
        atom_chars(_ランダムでユニークなn文字数の文字列,_ランダムでユニークなn文字数の文字リスト).

ランダムでユニークな文字(_n,_ランダムでユニークな文字) :-
        length(Ln,_n),
        選択可能文字リスト(_選択可能文字リスト),
        ランダムでユニークな文字_1(Ln,_選択可能文字リスト,_ランダムでユニークな文字).

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

ランダムでユニークな文字_2([_|Ln],_文字,_,_文字).
ランダムでユニークな文字_2([_|Ln],_,_選択文字を抜き取った選択可能文字リスト,_文字) :-
        ランダムでユニークな文字(Ln,_選択文字を抜き取った選択可能文字リスト,_文字).

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

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

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