Уникальная генерация 14 цифр (чисел)

#api #random #key #java

#API #Случайный #Клавиша #java

Вопрос:

Мне нужен лучший алгоритм или API для генерации 14 цифр, которые однозначно идентифицируются с возможностью достижения 0, чтобы иметь дубликаты. Шаблон генерации составляет около 12 раз в год с общим объемом 10 миллионов, следовательно, общее количество записей составит 120 миллионов, идентифицированных однозначно.

Комментарии:

1. «возможность достижения 0 для создания дубликатов» тогда это не случайно; поскольку генератор случайных чисел будет иметь 1 в <rand range> для возврата любого числа… это означает, что при диапазоне в 500 миллионов для последнего числа у вас будет 120/500 вероятность дублирования для этого одного числа

2. @saka1029 спасибо, чувак, но нет, мне нужно 14 цифр

3. @UKMonkey я согласен с вами, это не случайно, знаете ли вы какой-либо алгоритм для генерации уникальных 14 цифр.

4. Как насчет случайной генерации 1 цифры за раз? Предполагая, что вы используете 0-9 для всех цифр, вы должны получить довольно разумное распределение. Если вам действительно нужно, чтобы они были уникальными, как говорит Стивенк, вам нужно их записать и проверить.

Ответ №1:

Если вы выбрали числа случайным образом из фиксированного диапазона целых чисел, то вероятность дубликатов не равна нулю.

Если вам нужны числа, которые трудно угадать и которые уникальны, вам нужно:

  • хороший генератор случайных чисел и
  • база данных (или аналогичная) для хранения всех ранее сгенерированных вами чисел.

Алгоритм (псевдокод):

 while (true) {
    number = generate();
    if (!lookupInDatabase(number)) {
        recordInDatabase(number);
        return number;
    }
}
  

Комментарии:

1. Спасибо, но, как я упоминал ранее, существует огромное количество записей, и я не хочу каждый раз, когда я генерирую число, проверять, существует ли оно в более чем 120 миллионах записей.

2. Вы слышали об индексах? Вам не нужно проверять 120 миллионов записей каждый раз.