• Генерация уникальной комбинации средствами php?

    Очевидно, псевдослучайные числа - не лучший способ получать уникальный ключ.
    Но по существу такой код:
    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.
    Ответ написан
    Комментировать