Немного странная идея.Почему бы не использовать перестановки?например, у вас есть набор значений [0-9a-z] при создании первого идентификатора.вы берете первую перестановку в лексикографическом порядке.потом второй и тд.чтобы сделать его менее наглядным, вы можете изменить правила лексикографического порядка.сказать «а» идет после «т» или что-то в этом роде.Вы также можете использовать кортеж вместо полной перестановки.Это обеспечит отсутствие коллизий.
На самом деле эта идея заключается в создании своего рода двусторонней хэш-функции.в основном, если вы можете каким-то образом кодировать число «1», чтобы получить что-то вроде «q8d3dw» и иметь возможность декодировать «q8d3dw» обратно в «1», вы можете быть уверены, что эта функция даст вам уникальные строки для всех значенийот 1 до 36 ^ 6.
Проблема на самом деле при выборе этой функции.Самый простой способ - связать «1» с «000000», «2» с «000001», «12» с «00000b».В основном расположите все доступные строки в лексикографическом порядке и выберите строку в позиции, которая равна идентификатору.Однако об этом легко догадаться.Итак, что вы можете сделать, это искусственно изменить правила лексикографического порядка.Скажем, вместо нормального порядка (0,1,2,3 ... a, b, c ... x, y, z) вы можете немного перемешать его и получить что-то вроде (a, 5, t, 3...).Это даст немного более запутанные результаты.Тем не менее, это все еще будет довольно предположительно, потому что первый элемент будет "aaaaaa", второй "aaaaa5", затем "aaaaat".Таким образом, вы можете еще больше изменить правила лексикографического порядка, делая их зависимыми от положения персонажа.Произнесите заказ для первого идентификатора символа (a, 5, t, 3 ...) для второго (y, 7,3, r ...) и т. Д.
Теперь я не буду публиковатьлюбой псевдокод, так как он будет довольно длинным.И я не советую вам идти по этому пути, если вы не заинтересованы в создании такого рода алгоритмов для развлечения :).Однако, если вы пойдете по этому маршруту, это может быть очень эффективным способом генерации этих идентификаторов без шансов столкновения.И я посоветую вам прочитать том 4 «Искусство компьютерного программирования» доктора Дональда Кнута.Есть много предложений по реализации таких алгоритмов.