Гарантирует ли такая конструкция уникальность значения?

Вованыч

Новичок
Гарантирует ли такая конструкция уникальность значения?

PHP:
md5( uniqid(rand(),true) )
Функция uniqid выдаст гарантированно уникальные значения, есть ли вероятность что md5 каких-то выходов в данном случае совпадут?
 

Фанат

oncle terrible
Команда форума
Что ж вас всех на уникальность потянуло? один в базу генерит, второй так просто.

вероятность есть. какие еще будут вопросы?
 

AmdY

Пью пиво
Команда форума
зенит же выиграл кубок уефа, а шансов на то, что возникнет коллизия в md5 больше.
 

zerkms

TDD infected
Команда форума
есть ли вероятность что md5 каких-то выходов в данном случае совпадут?
md5 это 2^128 комбинаций => вероятность = 1 / 2^128

неужели даже такую простую комбинаторику уже все позабывали (не знают)?
 

Lightning

Трудоголик
md5 это 2^128 комбинаций => вероятность = 1 / 2^128
Если md5 - 2^128 комбинаций, это не значит, что вероятность того, что значения разных md5( uniqid(rand(),true) ) совпадут, равна 1 / 2^128.
 

zerkms

TDD infected
Команда форума
Lightning
это минимальная величина. согласно теории вероятностей у тебя даже подряд может совпасть 10 раз.
когда я писал тот пост, я надеялся, что люди понимают - что сказанное мной подразумевает равномерное распределение.
 

fixxxer

К.О.
Партнер клуба
Если хочется "непоследовательности", можно тупо xor-нить автоинкремент ;)
 

fixxxer

К.О.
Партнер клуба
define('MY_SECRET', 73963); // от балды

$id = (int)($_GET['id']) ^ MY_SECRET;
$result = $something->getById($id);

и наоборот, соответственно. Для большей похожести на тиниурл можно в hex и обратно. Или там base64.
 
Сверху