Самый простой способ: просто выдавать по очереди: 1111, 1112, 1113, 1114 ...
Если нужен относительно случайный вариант:
В вашем случае: сгенерировать все возможные варианты, перемешать и выдавать по очереди.
В общем случае, сделать как GUID: принять "ограниченое количество" достаточно большим, чтобы вероятность коллизии была ничтожна.
Ещё можно выдавать блоками: скажем в вашем случае длина - 12. Делаем два масства: массив выданных блоков и массив выданных значений из текщего блока. Выдавать блоками, скажем, все значения начинающиеся на 143256... Внутри блока делать как в самом первом случае: сгенерировать все значения и выдавать по очереди. Закончится блок - выдать другой.