def gen_n_random_num(n, MAX_NUM=MAX_INT, unique=True):
    """
    Returns @n @unique random unsigned integers (4 bytes) \
    between 0 and @MAX_NUM.
    """
    fmt = "<%dI" % n
    t = struct.calcsize(fmt)
    D = [d % MAX_NUM for d in struct.unpack(fmt, os.urandom(t))]
    if unique:
        D = set(D)
        assert MAX_NUM > n, \
            "Cannot have {0} unique integers less than {1}".format(n, MAX_NUM)
        while len(D) < n:
            print("Number of collision: {}. Regenerating!".format(n - len(D)))
            fmt = "<%dI" % (n - len(D))
            t = struct.calcsize(fmt)
            extra = struct.unpack(fmt, os.urandom(t))
            D |= set(d % MAX_NUM for d in extra)
        D = list(D)
    return D
def gen_n_random_num ( n , MAX_NUM = MAX_INT , unique = True ) : fmt = "<%dI" % n t = struct . calcsize ( fmt ) D = [ d % MAX_NUM for d in struct . unpack ( fmt , os . urandom ( t ) ) ] if unique : D = set ( D ) assert MAX_NUM > n , "Cannot have {0} unique integers less than {1}" . format ( n , MAX_NUM ) while len ( D ) < n : print ( "Number of collision: {}. Regenerating!" . format ( n - len ( D ) ) ) fmt = "<%dI" % ( n - len ( D ) ) t = struct . calcsize ( fmt ) extra = struct . unpack ( fmt , os . urandom ( t ) ) D |= set ( d % MAX_NUM for d in extra ) D = list ( D ) return D
Returns @n @unique random unsigned integers (4 bytes) \
    between 0 and @MAX_NUM.