How to generate unique 64 bits integers from Python? How to generate unique 64 bits integers from Python? python python

How to generate unique 64 bits integers from Python?


just mask the 128bit int

>>> import uuid>>> uuid.uuid4().int & (1<<64)-19518405196747027403L>>> uuid.uuid4().int & (1<<64)-112558137269921983654L

These are more or less random, so you have a tiny chance of a collision

Perhaps the first 64 bits of uuid1 is safer to use

>>> uuid.uuid1().int>>649392468011745350111L>>> uuid.uuid1().int>>649407757923520418271L>>> uuid.uuid1().int>>649418928317413528031L

These are largely based on the clock, so much less random but the uniqueness is better


64 bits unique

What's wrong with counting? A simple counter will create unique values. This is the simplest and it's easy to be sure you won't repeat a value.

Or, if counting isn't good enough, try this.

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

Depending on how you seed and use your random number generator, that should be unique.

You can -- of course -- do this incorrectly and get a repeating sequence of random numbers. Great care must be taken with how you handle seeds for a program that starts and stops.


A 64-bit random number from the OS's random number generator rather than a PRNG:

>>> from struct import unpack; from os import urandom>>> unpack("!Q", urandom(8))[0]12494068718269657783L