Очевидно, псевдослучайные числа - не лучший способ получать уникальный ключ.
Но по существу такой код:
function getRandSeq($seq_len) {
$result = array();
for ($i=1; $i<=$seq_len; $i++)
$result[] = rand(1, 10);
return implode(" ", $result);
}
function getMtRandSeq($seq_len) {
$result = array();
for ($i=1; $i<=$seq_len; $i++)
$result[] = mt_rand(1, 10);
return implode(" ", $result);
}
//
$total = 50000;
$seq_arr1 = array();
$seq_arr2 = array();
$dbl_count1 = 0;
$dbl_count2 = 0;
for ($t=1; $t<=$total; $t++) {
$seq1 = getRandSeq(16);
$seq2 = getMtRandSeq(16);
if (in_array($seq1, $seq_arr1))
$dbl_count1++;
if (in_array($seq2, $seq_arr2))
$dbl_count2++;
$seq_arr1[] = $seq1;
$seq_arr2[] = $seq2;
}
echo $dbl_count1."/".$dbl_count2."/".$total;
Вернул мне:
47952/0/50000
Т.е. на 50к генераций rand даёт кучу повторов, а вот mt_rand - 0.