Вы можете использовать или посмотреть код Boost.Uuid:
http://www.boost.org/doc/libs/1_47_0/libs/uuid/index.html
Это библиотека C ++, но, тем не менее, вы можете найти внутри, как автор кода получилUuid на нескольких системах.В последний раз, когда я проверял (январь 2010), я нашел по крайней мере следующие реализации для Windows и Linux / Solaris (эта информация может быть устаревшей):
UUID / GUID в Linux / Solaris
Открытьфайл в /dev/urandom
и чтение достаточного количества байтов (16) для создания GUID / UUID.
UUID / GUID в Windows
Используйте следующие функции WinAPI
Другие реализации
Страница Wikipedia на GUID / UUID содержит список альтернативных реализаций, которые вы можете использовать / изучать:
https://en.wikipedia.org/wiki/UUID#Implementations
О ваших условиях
Существует тип GUID / UUID, который всегда является случайным ( версия 4 ), что означает совместимость с другими GUID / UUIDсемантика, вы должны уважать это.
Теперь вы хотитеGUID / UUID должен быть заказан вовремя.Единственный способ сделать это без ослабления случайности GUID / UUID - это поставить префикс 16-байтового GUID / UUID целым числом без знака (что сделает ваши данные идентификатора 20 байтами или более, в зависимости от вашего целого числа).Просто сгенерируйте GUID / UUID и увеличьте целое число.