За последние 24 часа нас посетили 21284 программиста и 1699 роботов. Сейчас ищут 1836 программистов ...

Как сгенерировать уникальное случайное значение?

Тема в разделе "PHP для новичков", создана пользователем Вованыч, 25 апр 2009.

  1. Вованыч

    Вованыч Активный пользователь

    С нами с:
    18 дек 2008
    Сообщения:
    12
    Симпатии:
    0
    Алгоритм от текущих времени - можно будет подобрать.
    Добавлять к значению номер - лишний запрос к БД.

    Есть ли ещё какие-то методы сделать случайную последовательность символов с гарантией уникальности?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Код (Text):
    1. round(mt_rand(mt_rand(0, 10000), mt_rand(10000, 90000))*time()/M_PI);
    Теперь, число зависит непосредственно от делителя.
    Я выбрал в качестве делителя константу Пи, чем выше число, тем, соответственно, меньше цифр в результате.
    Знаки после запятой округляем.

    Если нужен более сложный алгоритм, записываем сгенерированные данные и на их основании находим делитель.
     
  3. Вованыч

    Вованыч Активный пользователь

    С нами с:
    18 дек 2008
    Сообщения:
    12
    Симпатии:
    0
    Apple, не, нужно случайную последовательность символов, а не только цифр.
     
  4. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    А чем не годится "метка времени + соль"?
     
  5. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Вованыч, а что мешает потом для некоторых заюзать chr?

    P.S. Кстати может такая штука тебе подойдет?
     
  6. R3VoLuT1OneR

    R3VoLuT1OneR Активный пользователь

    С нами с:
    16 апр 2009
    Сообщения:
    16
    Симпатии:
    0
    Код (Text):
    1.  
    2. $RandomText = '';
    3. for($I=0; $I<8; $I++)
    4. {
    5.     $fRand = rand(1,3);
    6.     if($fRand == 1) $RandomText .= chr(rand(65,90));
    7.     if($fRand == 2) $RandomText .= chr(rand(97,122));
    8.     if($fRand == 3) $RandomText .= chr(rand(48,57));
    9. }
    Что то такое?