Это еще не гарантирует уникальность, а только низкую вероятность совпадений. Вообще не вижу общего между случайным и уникальным ключем. Мне к примеру нужен уникальный, хоть все подряд, но уникальные. Это должным образом гарантирует uniqid(). Если мне нужен запутанный уникальный id я возьму md5(uniqid()). Зачем городить огород мне не понятно, лишая уникальный код уникальности и делая его случайным? случайный != уникальный