Если у вас другая проблема, вам может понадобиться другое решение, но для вашей текущей проблемы я просто зайду:
IntStream
.iterate(1, n -> n + 1)
.limit(10)
.forEach(System.out::println);
Я не могу говорить с предсказуемостью порядковых номеров, но это будет уникально. Я думаю, что Вы были бы более обеспеченным использованием генератора случайных чисел от Системы. Безопасность. Криптография, все же. Свяжите случайное число монотонно увеличивающимся значением (время) для генерации уникального ключа, и можно быть уверены, что это уникально и не предсказуемо.
Никакое значение фиксированной длины никогда не может гарантировать, что было на 100% уникально (просто называют его достаточно раз, плюс-минус окончание вселенной;-p) - но это может быть очень, очень, очень вряд ли для дублирования.
Принятие той Системы. Гуид. NewGuid использует CoCreateGuid, это не случайно вообще. Исторически, алгоритм, используемый для создания гуидов, должен был включить MAC-адрес от сетевого адаптера, в дополнение к некоторым другим вещам как время. Я не уверен, изменился ли алгоритм. В то время как это, конечно, не случайно, это, как гарантируют, будет уникально.
Я не знаю о.NET, но , алгоритм UUID определяется справедливо точно.
редактирование: при рассмотрении соответствующих битов (см. статью в Википедии), который должен объяснить, какая версия UUID используется.
редактирование 2: красный флаг для Вашего использования "безопасного" слова, который говорит мне, Вы - более обеспеченное использование четко определенного криптографического метода. Например, при генерации идентификаторов сессии на сервере, почему просто не, что-то простое как применяет хеш MD5 к конкатенации соответствующего подмножества следующего: {клиентский IP-адрес машины, последовательно увеличенный счетчик, зафиксировал секретную константу по Вашему выбору, произведенный от генератора случайных чисел по Вашему выбору, и т.д.}?
Документация для Системы. Гуид. NewGuid () не делает гарантий случайности, поэтому в то время как текущая реализация основана на генераторе случайных чисел (это - версия 4 алгоритма, который был разработан после того, как проблемы конфиденциальности явились результатом версии 1, которая использовала MAC-адрес; другая система как OS X Apple все еще использует версию 1 алгоритма).
Поэтому, в то время как у Вас есть очень высокая вероятность Системы. Гуид. NewGuid () генерация уникального значения, Вы не можете сделать предположения о его предсказуемости, потому что это не определяется документацией.
GUID, по определению, уникальны во всех отношениях. Были, когда-то давно, некоторые стандартные программы GUID0-поколения, которые генерировали последовательные GUID, но те были проблемами в... Win98, я думаю и был hotfixed Microsoft.
Вам необходимо доверять сгенерированному GUID, чтобы быть уникальными и никогда не повторяли или повторно создавали.
(РЕДАКТИРОВАНИЕ: Однако все мы понимаем, что строка алфавитно-цифровых символов имеет постоянное число перестановок, если строка починена в длине. Но в случае GUID количество перестановок является economical*.)
(* Черт возьми, где то, что XKCD, где предложение "астрономических" чисел не являются достаточно большими?)