Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > mt_rand повторяется


Автор: talker 20.11.2011, 15:46
Для одной задачи генерирую пару чисел, которая должна быть уникальной
Код

$x = mt_rand(0, 9999999);
$y = mt_rand(0, 9999999);

Если посмотреть с точки зрения матстатистики, то вероятность генерации повторно такой же пары практически равна нулю. Но на практике получается иначе. Уже сгенерировано ~200,000 пар и примерно 1 раз на 100 генераций получается повтор (уже существующая пара). Предполагаю, что это связано с особенностями функции mt_rand. Как лечить?
Пробовал
Код

mt_srand((double) microtime() * 10000000);

Не помогло.

+
Возможно, это имеет значение - php 5.2.14

Автор: ElGuapo 20.11.2011, 16:00
Действительно, есть такая проблема. На php.net в обсуждении предложено несколько способов увеличения случайности: 

http://php.net/manual/ru/function.mt-rand.php

А mt_srand в PHP 5 неактуальна - переинициализация выполняется автоматически.

Автор: talker 20.11.2011, 16:28
Ясно. Попробую такое смещение в разные стороны
Код

round(((double) microtime()) * 100000)

Автор: Shogun 20.11.2011, 18:30
Может лучше в сторону uniqid() смотреть?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)