#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 миллионов записей каждый раз.