Здравствуйте. Хочу понять, как сделать 99% уникальную строку (думаю, что 100% уникальности гарантировать невозможно, так как всегда будет мизерная вероятность совпадения). Используются только цифры и английские буквы в нижнем регистре (как я понял, md5 в php как раз выдаёт в только в нижнем регистре).
Придумал вот такой алгоритм:
$prefix = 'a_' . mt_rand(1, 3);
$md5_hash_one = mb_substr(md5(md5(random_int(0, 1000)) . md5(uniqid($prefix, true))), 0, 5);
$md5_hash_two = mb_substr(md5(md5(random_int(0, 1000)) . md5(uniqid($prefix, true))), -5);
$str = $prefix . $md5_hash_one . $md5_hash_two;
Компьютер сгенерировал пока что жалкие 95 млн. строк и продолжает работу. Машина у меня не такая мощная, чтобы наблюдать результаты в сотнях млн.
Как вы думаете, алгоритм выше имеет право на существование или есть более совершенный алгоритм для генерации случайной строки?