На мой взгляд, самый простой способ:
- find a desired number in range
[1,10000000)
, let it be x
and it
will represent your 6 digits.
- Find 3 characters (let's assume in range a-z). Let them be
a,b,c
.
- Your number is
(a-'a' + b-'a'*26 + c-'a'*26*26)*10000000 + x
(Где 'a' - это ascii-представление символа 'a'
, а a-'a 'означает числовое вычитание ascii)
Обратите внимание, что сгенерированное число может даже вписываться в long
- при условии, что это 64 бит.
Поколение нескольких чисел можно просто выполнить с помощью итерации, начиная с a = b = c = 'a'
и x = 0
, и начать продвигаться (увеличиваться на 1) , Когда вы достигли x = 10000000
, увеличьте, если a
передано z - увеличение b
, .... (похоже на то, что вы сделали бы в нормальном целочисленном арифметике).