Как сгенерировать уникальные 64-битные целые числа из Python?

Мне нужно создать уникальные 64-битные целые числа из Python. Я проверил модуль UUID . Но UUID, который он генерирует, составляет 128 бит целых чисел. Так что это не сработает.

Вы знаете какой-либо способ генерации уникальных целых чисел 64 бита в Python? Благодарю.

3 Solutions collect form web for “Как сгенерировать уникальные 64-битные целые числа из Python?”

просто замаскируйте 128 бит int

>>> import uuid >>> uuid.uuid4().int & (1<<64)-1 9518405196747027403L >>> uuid.uuid4().int & (1<<64)-1 12558137269921983654L 

Они более или менее случайны, поэтому у вас есть крошечный шанс столкновения

Возможно, первые 64 бита uuid1 безопаснее использовать

 >>> uuid.uuid1().int>>64 9392468011745350111L >>> uuid.uuid1().int>>64 9407757923520418271L >>> uuid.uuid1().int>>64 9418928317413528031L 

Они в значительной степени основаны на часах, гораздо менее случайных, но уникальность лучше

Уникально 64 бита

Что случилось с подсчетом? Простой счетчик создаст уникальные значения. Это самый простой и легко убедиться, что вы не будете повторять значение.

Или, если подсчет недостаточно, попробуйте это.

 >>> import random >>> random.getrandbits(64) 5316191164430650570L 

В зависимости от того, как вы используете семена и используете генератор случайных чисел, это должно быть уникальным.

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

64-битное случайное число из генератора случайных чисел ОС, а не PRNG:

 >>> from struct import unpack; from os import urandom >>> unpack("!Q", urandom(8))[0] 12494068718269657783L 
  • Как сгенерировать SOPInstance UID для файла DICOM?
  • Извлечь время из UUID v1 в python
  • Как сделать уникальный короткий URL с Python?
  • Django UUIDField modelfield вызывает ошибку в Django admin: плохо сформированная шестнадцатеричная строка UUID
  • Является ли python uuid1 последовательным как временные метки?
  • Как создать всемирную уникальную систему GUID / UUID для Mongo с Python?
  • Исправлен идентификатор машины (uuid.getnode)
  • Когда следует использовать uuid.uuid1 () vs. uuid.uuid4 () в python?
  • Python - лучший язык программирования в мире.