このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/759
#  mysqlで 
#  SELECT * FROM table ORDER BY RAND() LIMIT 10;でランダムに抽出できることは分かりました。 
#   
#  今度は 
#  値によってランダムの表示割合を変えたいんですがいい方法は無いでしょうか 
#  例えば 
#  PC 値段 \90000 
#  TV   値段 \60000 
#  プリンタ 値段 \20000 
#  のうち、ランダムで2つ表示させるとき 
#  値段の高いものを比較的多めに乗せたいです。この場合だと、PCとTVを優先的に2つに表示させることになります。 
# 
# 

'値段の高いものを比較的多めに抽出する'(_取得数,X) :-
        findall([_値段かけるランダム値,_商品名],(
                    table(_商品名,_値段),
                    _ランダム値 is random(6) + 1,
                    _値段かけるランダム値 is _値段 * _ランダム値),
                L1),
        降順に整列(L1,L3),
        取得数分を切り取る(L3,L4),
        整列キーを削除(L3,L4),
        append(_,[X|_],L4).

降順に整列(L1,L3) :-
        sort(L1,L2),
        reverse(L2,L3).

取得数分を切り取る(_取得数,L1,L) :-
        length(L,_取得数),
        append(L,_,L1).

整列キーを削除([],[]).
整列キーを削除([[_|L]|R1],[L|R2]) :-
        整列キーを削除(R1,R2).