Есть ли способ генерировать случайный UUID, который состоит только из чисел?

Класс Java UUID генерирует случайный UUID. Но это состоит из алфавитов и чисел. Для некоторых приложений нам нужны только числа. Есть ли способ генерировать случайный UUID, который состоит только из чисел в Java?

UUID.randomUUID();

Ответ 1

Почему бы не просто генерировать Random номер и поместить его в желаемый формат?

Это не даст вам уникальности из коробки. (т.е. вам нужно будет выполнить проверку каждого поколения и логику повтора)

Где, как другие решения, которые принимают биты UUID и преобразуют их в число, будут более точными в уникальности. в зависимости от вашего использования, вы все равно можете проверить уникальность этого подхода.

Ответ 2

Если вы не хотите случайного числа, но UUID с номерами используйте только:

String lUUID = String.format("%040d", new BigInteger(UUID.randomUUID().toString().replace("-", ""), 16));

в этом случае оставлено до 40 нулей...

результаты для:
  UUID: b55081fa-9cd1-48c2-95d4-efe2db322a54
в:
  UUID: 0241008287272164729465721528295504357972

Ответ 3

Хотя исходный постер этого вопроса поставил под вопрос @Jigar Joshi как лучший ответ, я хотел бы добавить, что в некоторых случаях есть смысл использовать UUID, а не случайные числа. Разница в том, что UUID (универсально) уникальны (отсюда и название), а случайные числа - нет. Это просто вопрос вероятности, если вы получаете одинаковое число дважды или даже чаще при генерации случайных чисел, но это никогда не произойдет с UUID. Поэтому я бы назвал @Chris Eibl ответом как лучший.

Ответ 4

Зачем использовать класс UUID, если вам не нужен UUID? Это похоже на то, что вам нужно просто случайное число, которое может быть достигнуто с помощью класса java.util.Random.

Ответ 5

UUID uuid = UUID.randomUUID();
String numericUUID = Long.toString(uuid.getMostSignificantBits())
                   + Long.toString(uuid.getLeastSignificantBits());

Ответ 6

Если вы хотите использовать UUIDs в отличие от класса Random, как это было предложено другими, вы можете просто использовать регулярное выражение вычеркивать все, кроме цифр из UUID. Попробуйте что-то вроде этого,

String id = UUID.randomUUID().toString().replaceAll("[^0-9]", "");

Ответ 7

Вызовите hashCode() в UUID, чтобы получить уникальное целое число.

Ответ 8

String uuid = UUID.randomUUID(). toString(). replaceAll ( "-", ""); //strips '-'