php mt rand



Mt rand

Автор Наиль Биктимиров задал вопрос в разделе Другие языки и технологии

На сколько эфективна функция mt_rand() в PHP? и получил лучший ответ

Ответ от Sm[гуру]
> Можно ли вообще полагаться только на эту функцию?
Для генерации уникальных значений? Нельзя.
rand-подобные функции для этого и не предназначены.
sm
Просветленный
(32204)
> для чего они тогда предназначены, если не для генерации уникальных значений?
rand от англ. Random - случайный, произвольно взятый.
Ни о какой уникальности генерируемых значений даже в названии ф-ции речи не идет !
Не говоря уже об описании ф-ции в офиц.документации, которое за тригода ты так прочитать видимо и не удосужился)

Ответ от QNA CENTER[гуру]
Ну кагбэ.. . Во-первых, если число шестизначное, то чисто статистически двое из миллиона юзеров стопроцентно будут иметь два одинаковых таких числа. Если это тебя так сильно заботит - реализуй фичу не через генерацию случайного числа, а как-нибудь иначе. Тебе ведь эта генерация для чего-то (!) нужна, правда? )

Ответ от Fallen down[гуру]
всгда можешь дороботать её чтото вроде
$tmp = mt_rand(1, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) ;
$tmp -= mt_rand(1, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) . mt_rand(0, 9) ;

Ответ от Tom[гуру]
Во-первых, ни один нормальный ГПЧ не будет отталкиваться от текущего времени. Это лишние затраты на получение информации от существующего API для решения тривиальной задачи. "отталкиваются от времени в милисекундах" они в процессе инициализации или принудительной рандомизации. А от повторов в таких случаях вообще никто не застрахован, так что только проверять существующие рандомные числа. Хотя, мелкософт понадеялся на рандом при именовании OLE объектов

Ответ от Ivantrs[гуру]
а кто тебе мешает после генерации числа - проверять, не используется ли оно уже ?

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: На сколько эфективна функция mt_rand() в PHP?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*