Символы в результате повторяются, причём как не группируй, повторы будут.
Но мысль о солях интересная, сваял свой вариант
Код:
function mdsalt($key, $num)
{
$arr = array();
for($i=0; $i<$num; $i++)
{
$arr[$i] = md5($key.$i);
}
arsort($arr);
return array_keys($arr);
}
Процессорное время жрёт в 1.5-2 раза больше предпоследнего алгоритма. Терпимо.
Распределение вроде чисто случайное.