Есть такая нетривиальная задача, как сгенерировать 121 миллион уникальных кодов из 18-значного алфавита.
Первое решение, которое приходит на ум, — это «влоб»: пишем скрипт, который просто генерит код из заданного алфавита заданной длины и добавляет его в базу, где для соответствующего поля проставлены уникальные индексы. Этот метод хорош только в том случае, если есть 70 часов на то, чтобы подождать, пока всё добавится.
Мы сегодня подумали и решили, что задача сводится к более простой, достаточно лишь немножко поднапрячься. В итоге пришли к выводу, что нужно взять двузначное число из этого алфавита и сделать комбинацию всех со всеми (то есть 182), а остальное просто раскидать равномерно.
Таким образом, нужно всего лишь сгенерить 324 серии по примерно 373,5 тысячи уникальных 8-значных кодов, что оказалось на порядки быстрее (2200 секунд), просто дописав два разряда.
Листинг этого дела приводить не буду, тут всё просто :)
Обязательным является только текст комментария. Он не может превышать 4кБ. Остальные поля служат для обратной связи. Имя всё же рекомендуется указать.